Skip to content

Commit 41e92be

Browse files
author
Anna Gringauze
authored
Create test_common package (#1945)
* Validate only needed summaries in expression_compiler_service * Move shared test functionality into test_common package * Rebase on master * Fix bad merge * Add comments * Run expression compiler service test with sound null safety
1 parent 443f820 commit 41e92be

31 files changed

+571
-205
lines changed

.github/workflows/dart.yml

Lines changed: 288 additions & 119 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dwds/CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
- Fill `BoundField.name` for records.
1111
- Display records as a container of fields.
1212
- Remove test-only code from `sdk_configuration.dart`.
13+
- Move shared test-only code to a new `test_common` package.
1314

1415
**Breaking changes**
1516
- Require `sdkConfigurationProvider` in `ExpressionCompilerService`

dwds/pubspec.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,4 +55,6 @@ dev_dependencies:
5555
puppeteer: ^2.19.0
5656
stream_channel: ^2.1.0
5757
test: ^1.21.1
58+
test_common:
59+
path: ../test_common
5860
webdriver: ^3.0.0

dwds/test/build_daemon_callstack_test.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,11 @@ import 'dart:async';
99
import 'package:dwds/src/connections/debug_connection.dart';
1010
import 'package:dwds/src/services/chrome_proxy_service.dart';
1111
import 'package:test/test.dart';
12+
import 'package:test_common/logging.dart';
1213
import 'package:vm_service/vm_service.dart';
1314
import 'package:webkit_inspection_protocol/webkit_inspection_protocol.dart';
1415

1516
import 'fixtures/context.dart';
16-
import 'fixtures/logging.dart';
1717

1818
class TestSetup {
1919
static final contextUnsound = TestContext.withWeakNullSafety(

dwds/test/chrome_proxy_service_test.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,11 @@ import 'package:dwds/src/utilities/shared.dart';
1616
import 'package:http/http.dart' as http;
1717
import 'package:path/path.dart' as path;
1818
import 'package:test/test.dart';
19+
import 'package:test_common/logging.dart';
1920
import 'package:vm_service/vm_service.dart';
2021
import 'package:webkit_inspection_protocol/webkit_inspection_protocol.dart';
2122

2223
import 'fixtures/context.dart';
23-
import 'fixtures/logging.dart';
2424

2525
final context = TestContext.withSoundNullSafety();
2626

dwds/test/dart_uri_test.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,9 @@
88
import 'package:dwds/src/loaders/strategy.dart';
99
import 'package:dwds/src/utilities/dart_uri.dart';
1010
import 'package:test/test.dart';
11+
import 'package:test_common/logging.dart';
1112

1213
import 'fixtures/fakes.dart';
13-
import 'fixtures/logging.dart';
1414

1515
class TestStrategy extends FakeStrategy {
1616
@override

dwds/test/evaluate_circular_common.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,11 @@ import 'dart:async';
99
import 'package:dwds/src/connections/debug_connection.dart';
1010
import 'package:dwds/src/services/chrome_proxy_service.dart';
1111
import 'package:test/test.dart';
12+
import 'package:test_common/logging.dart';
1213
import 'package:vm_service/vm_service.dart';
1314
import 'package:webkit_inspection_protocol/webkit_inspection_protocol.dart';
1415

1516
import 'fixtures/context.dart';
16-
import 'fixtures/logging.dart';
1717

1818
class TestSetup {
1919
static TestContext contextUnsound(String index) =>

dwds/test/evaluate_common.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,11 @@ import 'dart:async';
99
import 'package:dwds/src/connections/debug_connection.dart';
1010
import 'package:dwds/src/services/chrome_proxy_service.dart';
1111
import 'package:test/test.dart';
12+
import 'package:test_common/logging.dart';
1213
import 'package:vm_service/vm_service.dart';
1314
import 'package:webkit_inspection_protocol/webkit_inspection_protocol.dart';
1415

1516
import 'fixtures/context.dart';
16-
import 'fixtures/logging.dart';
1717

1818
class TestSetup {
1919
static TestContext contextUnsound(String index) =>

dwds/test/events_test.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,12 @@ import 'package:dwds/src/events.dart';
1111
import 'package:dwds/src/services/chrome_proxy_service.dart';
1212
import 'package:dwds/src/utilities/server.dart';
1313
import 'package:test/test.dart';
14+
import 'package:test_common/logging.dart';
1415
import 'package:vm_service/vm_service.dart';
1516
import 'package:webdriver/async_core.dart';
1617
import 'package:webkit_inspection_protocol/webkit_inspection_protocol.dart';
1718

1819
import 'fixtures/context.dart';
19-
import 'fixtures/logging.dart';
2020

2121
ChromeProxyService get service =>
2222
fetchChromeProxyService(context.debugConnection);

dwds/test/expression_compiler_service_test.dart

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,14 +9,13 @@ import 'dart:convert';
99
import 'dart:io';
1010

1111
import 'package:dwds/expression_compiler.dart';
12+
import 'package:dwds/sdk_configuration.dart';
1213
import 'package:dwds/src/services/expression_compiler_service.dart';
13-
import 'package:dwds/src/utilities/sdk_configuration.dart';
1414
import 'package:dwds/src/utilities/server.dart';
1515
import 'package:logging/logging.dart';
1616
import 'package:shelf/shelf.dart';
1717
import 'package:test/test.dart';
18-
19-
import 'fixtures/logging.dart';
18+
import 'package:test_common/logging.dart';
2019

2120
ExpressionCompilerService get service => _service!;
2221
late ExpressionCompilerService? _service;
@@ -47,10 +46,12 @@ void main() async {
4746
final source = outputDir.uri.resolve('try.dart');
4847
final packages = outputDir.uri.resolve('package_config.json');
4948
final kernel = outputDir.uri.resolve('try.full.dill');
49+
// Expression compiler service does not need any extra assets
50+
// generated in the SDK, so we use the current SDK layout and
51+
// configuration.
5052
final executable = Platform.resolvedExecutable;
5153
final dartdevc =
5254
SdkConfiguration.defaultConfiguration.compilerWorkerPath!;
53-
5455
// redirect logs for testing
5556
_output = StreamController<String>.broadcast();
5657
output.stream.listen(printOnFailure);
@@ -76,7 +77,7 @@ void main() async {
7677
sdkConfigurationProvider: DefaultSdkConfigurationProvider(),
7778
);
7879

79-
await service.initialize(moduleFormat: 'amd');
80+
await service.initialize(moduleFormat: 'amd', soundNullSafety: true);
8081

8182
// setup asset server
8283
serveHttpRequests(server, assetHandler, (e, s) {

dwds/test/fixtures/context.dart

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,14 +31,14 @@ import 'package:path/path.dart' as p;
3131
import 'package:shelf/shelf.dart';
3232
import 'package:shelf_proxy/shelf_proxy.dart';
3333
import 'package:test/test.dart';
34+
import 'package:test_common/logging.dart';
35+
import 'package:test_common/test_sdk_configuration.dart';
3436
import 'package:vm_service/vm_service.dart';
3537
// ignore: deprecated_member_use
3638
import 'package:webdriver/io.dart';
3739
import 'package:webkit_inspection_protocol/webkit_inspection_protocol.dart';
3840

39-
import 'logging.dart';
4041
import 'server.dart';
41-
import 'test_sdk_configuration.dart';
4242
import 'utilities.dart';
4343

4444
final _exeExt = Platform.isWindows ? '.exe' : '';
@@ -205,6 +205,7 @@ class TestContext {
205205
// Generate missing SDK assets if needed.
206206
final sdkConfigurationProvider =
207207
TestSdkConfigurationProvider(verboseCompiler: verboseCompiler);
208+
final sdkLayout = sdkConfigurationProvider.sdkLayout;
208209
final configuration = await sdkConfigurationProvider.configuration;
209210
configuration.validate();
210211

@@ -335,6 +336,7 @@ class TestContext {
335336
soundNullSafety: nullSafety == NullSafety.sound,
336337
experiments: experiments,
337338
verbose: verboseCompiler,
339+
sdkLayout: sdkLayout,
338340
);
339341

340342
final assetServerPort = await findUnusedPort();

dwds/test/frontend_server_breakpoint_test.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,11 @@ import 'dart:async';
99
import 'package:dwds/src/connections/debug_connection.dart';
1010
import 'package:dwds/src/services/chrome_proxy_service.dart';
1111
import 'package:test/test.dart';
12+
import 'package:test_common/logging.dart';
1213
import 'package:vm_service/vm_service.dart';
1314
import 'package:webkit_inspection_protocol/webkit_inspection_protocol.dart';
1415

1516
import 'fixtures/context.dart';
16-
import 'fixtures/logging.dart';
1717

1818
final context = TestContext.withWeakNullSafety(
1919
packageName: '_testPackage',

dwds/test/frontend_server_callstack_test.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,11 @@ import 'dart:async';
99
import 'package:dwds/src/connections/debug_connection.dart';
1010
import 'package:dwds/src/services/chrome_proxy_service.dart';
1111
import 'package:test/test.dart';
12+
import 'package:test_common/logging.dart';
1213
import 'package:vm_service/vm_service.dart';
1314
import 'package:webkit_inspection_protocol/webkit_inspection_protocol.dart';
1415

1516
import 'fixtures/context.dart';
16-
import 'fixtures/logging.dart';
1717

1818
class TestSetup {
1919
static final contextUnsound = TestContext.withWeakNullSafety(

dwds/test/handlers/asset_handler_test.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,9 @@
66

77
import 'package:shelf/shelf.dart';
88
import 'package:test/test.dart';
9+
import 'package:test_common/logging.dart';
910

1011
import '../fixtures/context.dart';
11-
import '../fixtures/logging.dart';
1212

1313
void main() {
1414
group('Asset handler', () {

dwds/test/records_test.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,10 @@
88
import 'package:dwds/src/connections/debug_connection.dart';
99
import 'package:dwds/src/services/chrome_proxy_service.dart';
1010
import 'package:test/test.dart';
11+
import 'package:test_common/logging.dart';
1112
import 'package:vm_service/vm_service.dart';
1213

1314
import 'fixtures/context.dart';
14-
import 'fixtures/logging.dart';
1515

1616
class TestSetup {
1717
TestContext context;

dwds/test/reload_test.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,10 @@
66
@Timeout(Duration(minutes: 5))
77
import 'package:dwds/src/loaders/strategy.dart';
88
import 'package:test/test.dart';
9+
import 'package:test_common/logging.dart';
910
import 'package:vm_service/vm_service.dart';
1011

1112
import 'fixtures/context.dart';
12-
import 'fixtures/logging.dart';
1313
import 'fixtures/utilities.dart';
1414

1515
final context = TestContext.withSoundNullSafety(

dwds/test/restore_breakpoints_test.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,11 @@ import 'dart:async';
99
import 'package:dwds/src/connections/debug_connection.dart';
1010
import 'package:dwds/src/services/chrome_proxy_service.dart';
1111
import 'package:test/test.dart';
12+
import 'package:test_common/logging.dart';
1213
import 'package:vm_service/vm_service.dart';
1314
import 'package:webkit_inspection_protocol/webkit_inspection_protocol.dart';
1415

1516
import 'fixtures/context.dart';
16-
import 'fixtures/logging.dart';
1717

1818
final context = TestContext.withSoundNullSafety();
1919
ChromeProxyService get service =>

frontend_server_common/lib/src/devfs.dart

Lines changed: 11 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,11 @@
77
import 'package:dwds/asset_reader.dart';
88
import 'package:file/file.dart';
99
import 'package:path/path.dart' as p;
10+
import 'package:test_common/test_sdk_layout.dart';
1011

1112
import 'asset_server.dart';
1213
import 'bootstrap.dart';
1314
import 'frontend_server_client.dart';
14-
import 'utilities.dart';
15-
16-
final String dartWebSdkPath = p.join(dartSdkPath, 'lib', 'dev_compiler');
1715

1816
class WebDevFS {
1917
WebDevFS({
@@ -25,6 +23,7 @@ class WebDevFS {
2523
required this.index,
2624
required this.soundNullSafety,
2725
this.urlTunneler,
26+
required this.sdkLayout,
2827
});
2928

3029
final FileSystem fileSystem;
@@ -36,6 +35,7 @@ class WebDevFS {
3635
final String index;
3736
final UrlEncoder? urlTunneler;
3837
final bool soundNullSafety;
38+
final TestSdkLayout sdkLayout;
3939
late final Directory _savedCurrentDirectory;
4040

4141
Future<Uri> create() async {
@@ -85,9 +85,9 @@ class WebDevFS {
8585

8686
assetServer.writeFile('main_module.digests', '{}');
8787

88-
var sdk = soundNullSafety ? dartSdkSound : dartSdk;
88+
var sdk = soundNullSafety ? dartSdk : dartSdkWeak;
8989
var sdkSourceMap =
90-
soundNullSafety ? dartSdkSourcemapSound : dartSdkSourcemap;
90+
soundNullSafety ? dartSdkSourcemap : dartSdkSourcemapWeak;
9191
assetServer.writeFile('dart_sdk.js', sdk.readAsStringSync());
9292
assetServer.writeFile('dart_sdk.js.map', sdkSourceMap.readAsStringSync());
9393

@@ -129,45 +129,12 @@ class WebDevFS {
129129
)..invalidatedModules = modules;
130130
}
131131

132-
File get requireJS => fileSystem.file(fileSystem.path.join(
133-
dartWebSdkPath,
134-
'amd',
135-
'require.js',
136-
));
137-
138-
File get dartSdk => fileSystem.file(fileSystem.path.join(
139-
dartWebSdkPath,
140-
'kernel',
141-
'amd',
142-
'dart_sdk_unsound.js',
143-
));
144-
145-
File get dartSdkSound => fileSystem.file(fileSystem.path.join(
146-
dartWebSdkPath,
147-
'kernel',
148-
'amd',
149-
'dart_sdk.js',
150-
));
151-
152-
File get dartSdkSourcemap => fileSystem.file(fileSystem.path.join(
153-
dartWebSdkPath,
154-
'kernel',
155-
'amd',
156-
'dart_sdk_unsound.js.map',
157-
));
158-
159-
File get dartSdkSourcemapSound => fileSystem.file(fileSystem.path.join(
160-
dartWebSdkPath,
161-
'kernel',
162-
'amd',
163-
'dart_sdk.js.map',
164-
));
165-
166-
File get stackTraceMapper => fileSystem.file(fileSystem.path.join(
167-
dartWebSdkPath,
168-
'web',
169-
'dart_stack_trace_mapper.js',
170-
));
132+
File get requireJS => fileSystem.file(sdkLayout.requireJsPath);
133+
File get dartSdkWeak => fileSystem.file(sdkLayout.weakJsPath);
134+
File get dartSdk => fileSystem.file(sdkLayout.soundJsPath);
135+
File get dartSdkSourcemapWeak => fileSystem.file(sdkLayout.weakJsMapPath);
136+
File get dartSdkSourcemap => fileSystem.file(sdkLayout.soundJsMapPath);
137+
File get stackTraceMapper => fileSystem.file(sdkLayout.stackTraceMapperPath);
171138
}
172139

173140
class UpdateFSReport {

frontend_server_common/lib/src/frontend_server_client.dart

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import 'dart:io';
1111
import 'package:dwds/expression_compiler.dart';
1212
import 'package:logging/logging.dart';
1313
import 'package:package_config/package_config.dart';
14-
import 'package:path/path.dart' as p;
14+
import 'package:test_common/test_sdk_layout.dart';
1515
import 'package:usage/uuid/uuid.dart';
1616

1717
import 'utilities.dart';
@@ -24,9 +24,6 @@ void defaultConsumer(String message, {StackTrace? stackTrace}) =>
2424
? _serverLogger.info(message)
2525
: _serverLogger.severe(message, null, stackTrace);
2626

27-
String get frontendServerExecutable =>
28-
p.join(dartSdkPath, 'bin', 'snapshots', 'frontend_server.dart.snapshot');
29-
3027
typedef CompilerMessageConsumer = void Function(String message,
3128
{StackTrace stackTrace});
3229

@@ -261,6 +258,7 @@ class ResidentCompiler {
261258
required this.platformDill,
262259
required this.soundNullSafety,
263260
this.experiments = const <String>[],
261+
required this.sdkLayout,
264262
this.verbose = false,
265263
CompilerMessageConsumer compilerMessageConsumer = defaultConsumer,
266264
}) : _stdoutHandler = StdoutHandler(consumer: compilerMessageConsumer);
@@ -273,6 +271,7 @@ class ResidentCompiler {
273271
final String platformDill;
274272
final bool soundNullSafety;
275273
final List<String> experiments;
274+
final TestSdkLayout sdkLayout;
276275
final bool verbose;
277276

278277
/// The path to the root of the Dart SDK used to compile.
@@ -362,7 +361,7 @@ class ResidentCompiler {
362361

363362
Future<CompilerOutput?> _compile(
364363
String scriptUri, String outputFilePath) async {
365-
var frontendServer = frontendServerExecutable;
364+
var frontendServer = sdkLayout.frontendServerSnapshotPath;
366365
var args = <String>[
367366
frontendServer,
368367
'--sdk-root',

0 commit comments

Comments
 (0)