Skip to content

Split fakes.dart into null-safe and non null-safe fakes #1685

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 4 commits into from
Jul 18, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion dwds/test/dart_uri_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,8 @@ import 'package:dwds/src/utilities/sdk_configuration.dart';
import 'package:path/path.dart' as p;
import 'package:test/test.dart';

import 'fixtures/fakes.dart';
import 'fixtures/logging.dart';
import 'fixtures/migrated_fakes.dart';

class TestStrategy extends FakeStrategy {
@override
Expand Down
33 changes: 10 additions & 23 deletions dwds/test/debugger_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@
@TestOn('vm')
import 'dart:async';

import 'package:dwds/asset_reader.dart';
import 'package:dwds/src/debugging/debugger.dart';
import 'package:dwds/src/debugging/frame_computer.dart';
import 'package:dwds/src/debugging/inspector.dart';
Expand All @@ -22,6 +21,7 @@ import 'package:webkit_inspection_protocol/webkit_inspection_protocol.dart'
import 'fixtures/context.dart';
import 'fixtures/debugger_data.dart';
import 'fixtures/fakes.dart';
import 'fixtures/migrated_fakes.dart';

final context = TestContext();
AppInspector inspector;
Expand All @@ -41,27 +41,13 @@ class TestStrategy extends FakeStrategy {
'foo/ddc';
}

class FakeAssetReader implements AssetReader {
@override
Future<String> dartSourceContents(String serverPath) =>
throw UnimplementedError();

@override
Future<String> metadataContents(String serverPath) =>
throw UnimplementedError();

@override
Future<String> sourceMapContents(String serverPath) async =>
'{"version":3,"sourceRoot":"","sources":["main.dart"],"names":[],'
'"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAUwB,IAAtB,WAAM;AAKJ,'
'IAHF,4BAAkB,aAAa,SAAC,GAAG;AACb,MAApB,WAAM;AACN,YAAgC,+CAAO,AAAK,oBAAO,'
'yCAAC,WAAW;IAChE;AAC0D,IAA3D,AAAS,AAAK,0DAAO;AAAe,kBAAO;;;AAEvC,gBAAQ;'
'AAGV,IAFI,kCAAqC,QAAC;AACX,MAA/B,WAAM,AAAwB,0BAAP,QAAF,AAAE,KAAK,GAAP;'
';EAEzB","file":"main.ddc.js"}';

@override
Future<void> close() async {}
}
final sourceMapContents =
'{"version":3,"sourceRoot":"","sources":["main.dart"],"names":[],'
'"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAUwB,IAAtB,WAAM;AAKJ,'
'IAHF,4BAAkB,aAAa,SAAC,GAAG;AACb,MAApB,WAAM;AACN,YAAgC,+CAAO,AAAK,oBAAO,'
'yCAAC,WAAW;IAChE;AAC0D,IAA3D,AAAS,AAAK,0DAAO;AAAe,kBAAO;;;AAEvC,gBAAQ;'
'AAGV,IAFI,kCAAqC,QAAC;AACX,MAA/B,WAAM,AAAwB,0BAAP,QAAF,AAAE,KAAK,GAAP;'
';EAEzB","file":"main.ddc.js"}';

final sampleSyncFrame = WipCallFrame({
'callFrameId': '{"ordinal":0,"injectedScriptId":2}',
Expand Down Expand Up @@ -101,7 +87,8 @@ void main() async {
webkitDebugger.onPaused = pausedController.stream;
globalLoadStrategy = TestStrategy();
final root = 'fakeRoot';
locations = Locations(FakeAssetReader(), FakeModules(), root);
locations = Locations(
FakeAssetReader(sourceMap: sourceMapContents), FakeModules(), root);
locations.initialize('fake_entrypoint');
skipLists = SkipLists();
debugger = await Debugger.create(
Expand Down
62 changes: 0 additions & 62 deletions dwds/test/fixtures/fakes.dart
Original file line number Diff line number Diff line change
Expand Up @@ -6,20 +6,17 @@

import 'dart:async';

import 'package:dwds/expression_compiler.dart';
import 'package:dwds/src/debugging/classes.dart';
import 'package:dwds/src/debugging/execution_context.dart';
import 'package:dwds/src/debugging/inspector.dart';
import 'package:dwds/src/debugging/instance.dart';
import 'package:dwds/src/debugging/libraries.dart';
import 'package:dwds/src/debugging/metadata/provider.dart';
import 'package:dwds/src/debugging/modules.dart';
import 'package:dwds/src/debugging/remote_debugger.dart';
import 'package:dwds/src/debugging/webkit_debugger.dart';
import 'package:dwds/src/handlers/socket_connections.dart';
import 'package:dwds/src/loaders/require.dart';
import 'package:dwds/src/loaders/strategy.dart';
import 'package:shelf/shelf.dart' as shelf;
import 'package:vm_service/vm_service.dart';

/// A library of fake/stub implementations of our classes and their supporting
Expand Down Expand Up @@ -259,62 +256,3 @@ class FakeExecutionContext extends ExecutionContext {

FakeExecutionContext();
}

class FakeStrategy implements LoadStrategy {
@override
Future<String> bootstrapFor(String entrypoint) async => 'dummy_bootstrap';

@override
shelf.Handler get handler =>
(request) => (request.url.path == 'someDummyPath')
? shelf.Response.ok('some dummy response')
: shelf.Response.notFound('someDummyPath');

@override
String get id => 'dummy-id';

@override
String get moduleFormat => 'dummy-format';

@override
String get loadLibrariesModule => '';

@override
String get loadLibrariesSnippet => '';

@override
String loadLibrarySnippet(String libraryUri) => '';

@override
String get loadModuleSnippet => '';

@override
ReloadConfiguration get reloadConfiguration => ReloadConfiguration.none;

@override
String loadClientSnippet(String clientScript) => 'dummy-load-client-snippet';

@override
Future<String> moduleForServerPath(String entrypoint, String serverPath) =>
null;

@override
Future<String> serverPathForModule(String entrypoint, String module) => null;

@override
Future<String> sourceMapPathForModule(String entrypoint, String module) =>
null;

@override
String serverPathForAppUri(String appUri) => null;

@override
MetadataProvider metadataProviderFor(String entrypoint) => null;

@override
void trackEntrypoint(String entrypoint) {}

@override
Future<Map<String, ModuleInfo>> moduleInfoForEntrypoint(String entrypoint) =>
throw UnimplementedError();
}
108 changes: 108 additions & 0 deletions dwds/test/fixtures/migrated_fakes.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,108 @@
// Copyright (c) 2022, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.

import 'dart:async';

import 'package:dwds/expression_compiler.dart';
import 'package:dwds/src/debugging/metadata/provider.dart';
import 'package:dwds/src/loaders/strategy.dart';
import 'package:shelf/shelf.dart' as shelf;
import 'package:dwds/asset_reader.dart';

class FakeStrategy implements LoadStrategy {
@override
Future<String> bootstrapFor(String entrypoint) async => 'dummy_bootstrap';

@override
shelf.Handler get handler =>
(request) => (request.url.path == 'someDummyPath')
? shelf.Response.ok('some dummy response')
: shelf.Response.notFound('someDummyPath');

@override
String get id => 'dummy-id';

@override
String get moduleFormat => 'dummy-format';

@override
String get loadLibrariesModule => '';

@override
String get loadLibrariesSnippet => '';

@override
String loadLibrarySnippet(String libraryUri) => '';

@override
String get loadModuleSnippet => '';

@override
ReloadConfiguration get reloadConfiguration => ReloadConfiguration.none;

@override
String loadClientSnippet(String clientScript) => 'dummy-load-client-snippet';

@override
Future<String> moduleForServerPath(String entrypoint, String serverPath) =>
Future.value('');

@override
Future<String> serverPathForModule(String entrypoint, String module) =>
Future.value('');

@override
Future<String> sourceMapPathForModule(String entrypoint, String module) =>
Future.value('');

@override
String serverPathForAppUri(String appUri) => '';

@override
MetadataProvider metadataProviderFor(String entrypoint) =>
MetadataProvider(entrypoint, FakeAssetReader());

@override
void trackEntrypoint(String entrypoint) {}

@override
Future<Map<String, ModuleInfo>> moduleInfoForEntrypoint(String entrypoint) =>
throw UnimplementedError();
}

class FakeAssetReader implements AssetReader {
final String? _metadata;
final String? _dartSource;
final String? _sourceMap;
FakeAssetReader({
metadata,
dartSource,
sourceMap,
}) : _metadata = metadata,
_dartSource = dartSource,
_sourceMap = sourceMap;

@override
Future<String> dartSourceContents(String serverPath) {
return _throwUnimplementedOrReturnContents(_dartSource);
}

@override
Future<String> metadataContents(String serverPath) {
return _throwUnimplementedOrReturnContents(_metadata);
}

@override
Future<String> sourceMapContents(String serverPath) {
return _throwUnimplementedOrReturnContents(_sourceMap);
}

@override
Future<void> close() async {}

Future<String> _throwUnimplementedOrReturnContents(String? contents) {
if (contents == null) throw UnimplementedError();
return Future.value(contents);
}
}
2 changes: 1 addition & 1 deletion dwds/test/handlers/injector_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ import 'package:shelf/shelf.dart';
import 'package:shelf/shelf_io.dart' as shelf_io;
import 'package:test/test.dart';

import '../fixtures/fakes.dart';
import '../fixtures/migrated_fakes.dart';

void main() {
HttpServer server;
Expand Down
12 changes: 10 additions & 2 deletions dwds/test/location_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,15 @@ import 'package:dwds/src/utilities/dart_uri.dart';
import 'package:shelf/shelf.dart' as shelf;
import 'package:test/test.dart';

import 'debugger_test.dart';
import 'fixtures/migrated_fakes.dart';

final sourceMapContents =
'{"version":3,"sourceRoot":"","sources":["main.dart"],"names":[],'
'"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAUwB,IAAtB,WAAM;AAKJ,'
'IAHF,4BAAkB,aAAa,SAAC,GAAG;AACb,MAApB,WAAM;AACN,YAAgC,+CAAO,AAAK,oBAAO,'
'yCAAC,WAAW;IAChE;AAC0D,IAA3D,AAAS,AAAK,0DAAO;AAAe,kBAAO;;;AAEvC,gBAAQ;'
'AAGV,IAFI,kCAAqC,QAAC;AACX,MAA/B,WAAM,AAAwB,0BAAP,QAAF,AAAE,KAAK,GAAP;'
';EAEzB","file":"main.ddc.js"}';

void main() {
const lines = 100;
Expand All @@ -22,7 +30,7 @@ void main() {
globalLoadStrategy = MockLoadStrategy();
final dartUri = DartUri('org-dartlang://web/main.dart');

final assetReader = FakeAssetReader();
final assetReader = FakeAssetReader(sourceMap: sourceMapContents);
final modules = MockModules();
final locations = Locations(assetReader, modules, '');
locations.initialize('fake_entrypoint');
Expand Down
29 changes: 5 additions & 24 deletions dwds/test/metadata_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,12 @@
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.

// @dart = 2.9

import 'package:dwds/asset_reader.dart';
import 'package:dwds/src/debugging/metadata/module_metadata.dart';
import 'package:dwds/src/debugging/metadata/provider.dart';
import 'package:test/test.dart';

import 'fixtures/migrated_fakes.dart';

const _emptySourceMetadata =
'{"version":"1.0.0","name":"web/main","closureName":"load__web__main",'
'"sourceMapUri":"foo/web/main.ddc.js.map",'
Expand Down Expand Up @@ -38,29 +37,11 @@ const _fileUriMetadata =
'"fileUri":"org-dartlang-app:///web/main.dart","partUris":[]}]}\n'
'// intentionally empty: package blah has no dart sources';

class FakeAssetReader implements AssetReader {
final String _metadata;
FakeAssetReader(this._metadata);
@override
Future<String> dartSourceContents(String serverPath) =>
throw UnimplementedError();

@override
Future<String> metadataContents(String serverPath) async => _metadata;

@override
Future<String> sourceMapContents(String serverPath) =>
throw UnimplementedError();

@override
Future<void> close() async {}
}

void main() {
test('can parse metadata with empty sources', () async {
final provider = MetadataProvider(
'foo.bootstrap.js',
FakeAssetReader(_emptySourceMetadata),
FakeAssetReader(metadata: _emptySourceMetadata),
);
expect(await provider.libraries,
contains('org-dartlang-app:///web/main.dart'));
Expand All @@ -70,7 +51,7 @@ void main() {
test('can parse metadata with no null safety information', () async {
final provider = MetadataProvider(
'foo.bootstrap.js',
FakeAssetReader(_noNullSafetyMetadata),
FakeAssetReader(metadata: _noNullSafetyMetadata),
);
expect(await provider.libraries,
contains('org-dartlang-app:///web/main.dart'));
Expand All @@ -80,7 +61,7 @@ void main() {
test('throws on metadata with absolute import uris', () async {
final provider = MetadataProvider(
'foo.bootstrap.js',
FakeAssetReader(_fileUriMetadata),
FakeAssetReader(metadata: _fileUriMetadata),
);
await expectLater(provider.libraries,
throwsA(const TypeMatcher<AbsoluteImportUriException>()));
Expand Down
Loading