Skip to content

Commit b58d3eb

Browse files
author
Anna Gringauze
authored
Run webdev tests in a copy of the sdk directory (#1987)
* Validate only needed summaries in expression_compiler_service * Move shared test functionality into test_common package * Rebase on master * Fix bad merge * Re-enable webdev weak null safety e2e tests * Create copy of the SDK for tests * Modify tests to run with sdk copy * Cleanup * Pull out project definitions into separate file * Add package name to the project and use it in tests * Fix sdk configiuration tests * Update instance_inspection tests * Less changes in chrome_proxy_service.dart * Run webdev tests in a copy of the sdk * Fix bad merge * Cleanup
1 parent 1e7f9b7 commit b58d3eb

12 files changed

+144
-94
lines changed

Diff for: dwds/test/fixtures/context.dart

+1-1
Original file line numberDiff line numberDiff line change
@@ -176,7 +176,7 @@ class TestContext {
176176
}) async {
177177
// Generate missing SDK assets if needed.
178178
final sdkConfigurationProvider =
179-
TestSdkConfigurationProvider(verboseCompiler: verboseCompiler);
179+
TestSdkConfigurationProvider(verbose: verboseCompiler);
180180
final sdkLayout = sdkConfigurationProvider.sdkLayout;
181181
final configuration = await sdkConfigurationProvider.configuration;
182182
configuration.validate();

Diff for: test_common/lib/sdk_asset_generator.dart

+3-3
Original file line numberDiff line numberDiff line change
@@ -17,14 +17,14 @@ class SdkAssetGenerator {
1717
final _logger = Logger('SdkAssetGenerator');
1818

1919
final FileSystem fileSystem;
20-
final bool verboseCompiler;
20+
final bool verbose;
2121

2222
late final TestSdkLayout sdkLayout;
2323

2424
SdkAssetGenerator({
2525
this.fileSystem = const LocalFileSystem(),
2626
required this.sdkLayout,
27-
this.verboseCompiler = false,
27+
this.verbose = false,
2828
});
2929

3030
/// Generate all SDK assets, once for the current executable run.
@@ -180,7 +180,7 @@ class SdkAssetGenerator {
180180
'--no-sound-null-safety',
181181
'--output',
182182
summaryPath,
183-
if (verboseCompiler) '--verbose',
183+
if (verbose) '--verbose',
184184
];
185185

186186
_logger.fine('Executing dart ${args.join(' ')}');

Diff for: test_common/lib/test_sdk_configuration.dart

+4-5
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ class TestSdkCopyConfigurationProvider extends SdkConfigurationProvider {
5757
try {
5858
final assetGenerator = SdkAssetGenerator(
5959
sdkLayout: sdkLayout,
60-
verboseCompiler: _verbose,
60+
verbose: _verbose,
6161
);
6262

6363
await assetGenerator.generateSdkAssets();
@@ -92,13 +92,12 @@ class TestSdkCopyConfigurationProvider extends SdkConfigurationProvider {
9292
/// TODO(annagrin): update to only generating missing sound artifacts
9393
/// for frontend server after we have no uses of weak null safety.
9494
class TestSdkConfigurationProvider extends SdkConfigurationProvider {
95-
final bool _verboseCompiler;
95+
final bool _verbose;
9696
SdkConfiguration? _configuration;
9797

9898
final sdkLayout = TestSdkLayout.defaultSdkLayout;
9999

100-
TestSdkConfigurationProvider({bool verboseCompiler = false})
101-
: _verboseCompiler = verboseCompiler;
100+
TestSdkConfigurationProvider({bool verbose = false}) : _verbose = verbose;
102101

103102
@override
104103
Future<SdkConfiguration> get configuration async =>
@@ -108,7 +107,7 @@ class TestSdkConfigurationProvider extends SdkConfigurationProvider {
108107
Future<SdkConfiguration> _create() async {
109108
final assetGenerator = SdkAssetGenerator(
110109
sdkLayout: sdkLayout,
111-
verboseCompiler: _verboseCompiler,
110+
verbose: _verbose,
112111
);
113112

114113
await assetGenerator.generateSdkAssets();

Diff for: test_common/test/sdk_asset_generator_test.dart

+1-1
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ void main() {
7676
final configuration = TestSdkLayout.createConfiguration(sdkLayout);
7777

7878
final assetGenerator =
79-
SdkAssetGenerator(sdkLayout: sdkLayout, verboseCompiler: true);
79+
SdkAssetGenerator(sdkLayout: sdkLayout, verbose: true);
8080
await assetGenerator.generateSdkAssets();
8181

8282
// Make sure SDK configuration and asset generator agree on the file paths.

Diff for: webdev/test/daemon/app_domain_test.dart

+21-17
Original file line numberDiff line numberDiff line change
@@ -14,39 +14,43 @@ import 'utils.dart';
1414
void main() {
1515
late String exampleDirectory;
1616

17+
final testRunner = TestRunner();
1718
setUpAll(() async {
18-
exampleDirectory = await prepareWorkspace();
19+
await testRunner.setUpAll();
20+
exampleDirectory = await testRunner.prepareWorkspace();
1921
});
2022

23+
tearDownAll(testRunner.tearDownAll);
24+
2125
group('AppDomain', () {
2226
group('Events', () {
2327
test('.start', () async {
24-
var webdev =
25-
await runWebDev(['daemon'], workingDirectory: exampleDirectory);
28+
var webdev = await testRunner
29+
.runWebDev(['daemon'], workingDirectory: exampleDirectory);
2630
await expectLater(
2731
webdev.stdout, emitsThrough(startsWith('[{"event":"app.start"')));
2832
await exitWebdev(webdev);
2933
});
3034

3135
test('.started', () async {
32-
var webdev =
33-
await runWebDev(['daemon'], workingDirectory: exampleDirectory);
36+
var webdev = await testRunner
37+
.runWebDev(['daemon'], workingDirectory: exampleDirectory);
3438
await expectLater(
3539
webdev.stdout, emitsThrough(startsWith('[{"event":"app.started"')));
3640
await exitWebdev(webdev);
3741
});
3842

3943
test('.debugPort', () async {
40-
var webdev =
41-
await runWebDev(['daemon'], workingDirectory: exampleDirectory);
44+
var webdev = await testRunner
45+
.runWebDev(['daemon'], workingDirectory: exampleDirectory);
4246
await expectLater(webdev.stdout,
4347
emitsThrough(startsWith('[{"event":"app.debugPort"')));
4448
await exitWebdev(webdev);
4549
});
4650

4751
test('.log', () async {
48-
var webdev =
49-
await runWebDev(['daemon'], workingDirectory: exampleDirectory);
52+
var webdev = await testRunner
53+
.runWebDev(['daemon'], workingDirectory: exampleDirectory);
5054
var appId = await waitForAppId(webdev);
5155
// The example app does an initial print.
5256
await expectLater(
@@ -60,8 +64,8 @@ void main() {
6064

6165
group('Methods', () {
6266
test('.callServiceExtension', () async {
63-
var webdev =
64-
await runWebDev(['daemon'], workingDirectory: exampleDirectory);
67+
var webdev = await testRunner
68+
.runWebDev(['daemon'], workingDirectory: exampleDirectory);
6569
var appId = await waitForAppId(webdev);
6670
if (Platform.isWindows) {
6771
// Windows takes a bit longer to run the application and register
@@ -81,8 +85,8 @@ void main() {
8185
});
8286

8387
test('.reload', () async {
84-
var webdev =
85-
await runWebDev(['daemon'], workingDirectory: exampleDirectory);
88+
var webdev = await testRunner
89+
.runWebDev(['daemon'], workingDirectory: exampleDirectory);
8690
var appId = await waitForAppId(webdev);
8791
var extensionCall = '[{"method":"app.restart","id":0,'
8892
'"params" : { "appId" : "$appId", "fullRestart" : false}}]';
@@ -97,8 +101,8 @@ void main() {
97101
});
98102

99103
test('.restart', () async {
100-
var webdev =
101-
await runWebDev(['daemon'], workingDirectory: exampleDirectory);
104+
var webdev = await testRunner
105+
.runWebDev(['daemon'], workingDirectory: exampleDirectory);
102106
var appId = await waitForAppId(webdev);
103107
var extensionCall = '[{"method":"app.restart","id":0,'
104108
'"params" : { "appId" : "$appId", "fullRestart" : true}}]';
@@ -117,8 +121,8 @@ void main() {
117121
});
118122

119123
test('.stop', () async {
120-
var webdev =
121-
await runWebDev(['daemon'], workingDirectory: exampleDirectory);
124+
var webdev = await testRunner
125+
.runWebDev(['daemon'], workingDirectory: exampleDirectory);
122126
var appId = await waitForAppId(webdev);
123127
var stopCall = '[{"method":"app.stop","id":0,'
124128
'"params" : { "appId" : "$appId"}}]';

Diff for: webdev/test/daemon/daemon_domain_test.dart

+11-7
Original file line numberDiff line numberDiff line change
@@ -14,15 +14,19 @@ import 'utils.dart';
1414
void main() {
1515
late String exampleDirectory;
1616

17+
final testRunner = TestRunner();
1718
setUpAll(() async {
18-
exampleDirectory = await prepareWorkspace();
19+
await testRunner.setUpAll();
20+
exampleDirectory = await testRunner.prepareWorkspace();
1921
});
2022

23+
tearDownAll(testRunner.tearDownAll);
24+
2125
group('Daemon', () {
2226
group('Events', () {
2327
test('.connected', () async {
24-
var webdev =
25-
await runWebDev(['daemon'], workingDirectory: exampleDirectory);
28+
var webdev = await testRunner
29+
.runWebDev(['daemon'], workingDirectory: exampleDirectory);
2630
await expectLater(
2731
webdev.stdout, emits(startsWith('[{"event":"daemon.connected"')));
2832
await exitWebdev(webdev);
@@ -31,17 +35,17 @@ void main() {
3135

3236
group('Methods', () {
3337
test('.version', () async {
34-
var webdev =
35-
await runWebDev(['daemon'], workingDirectory: exampleDirectory);
38+
var webdev = await testRunner
39+
.runWebDev(['daemon'], workingDirectory: exampleDirectory);
3640
webdev.stdin.add(utf8.encode('[{"method":"daemon.version","id":0}]\n'));
3741
await expectLater(
3842
webdev.stdout, emitsThrough(equals('[{"id":0,"result":"0.4.2"}]')));
3943
await exitWebdev(webdev);
4044
});
4145

4246
test('.shutdown', () async {
43-
var webdev =
44-
await runWebDev(['daemon'], workingDirectory: exampleDirectory);
47+
var webdev = await testRunner
48+
.runWebDev(['daemon'], workingDirectory: exampleDirectory);
4549
webdev.stdin
4650
.add(utf8.encode('[{"method":"daemon.shutdown","id":0}]\n'));
4751
await expectLater(webdev.stdout, emitsThrough(equals('[{"id":0}]')));

Diff for: webdev/test/daemon/launch_app_test.dart

+7-2
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,17 @@ import 'utils.dart';
1111
void main() {
1212
late String exampleDirectory;
1313

14+
final testRunner = TestRunner();
1415
setUpAll(() async {
15-
exampleDirectory = await prepareWorkspace();
16+
await testRunner.setUpAll();
17+
exampleDirectory = await testRunner.prepareWorkspace();
1618
});
1719

20+
tearDownAll(testRunner.tearDownAll);
21+
1822
test('--launch-app launches the specified app', () async {
19-
var webdev = await runWebDev(['daemon', '--launch-app=web/scopes.html'],
23+
var webdev = await testRunner.runWebDev(
24+
['daemon', '--launch-app=web/scopes.html'],
2025
workingDirectory: exampleDirectory);
2126
var appId = await waitForAppId(webdev);
2227

Diff for: webdev/test/daemon/utils.dart

-15
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,9 @@
55
import 'dart:async';
66
import 'dart:convert';
77

8-
import 'package:path/path.dart' as p;
98
import 'package:test/test.dart';
109
import 'package:test_process/test_process.dart';
1110
import 'package:vm_service/vm_service.dart';
12-
import 'package:webdev/src/util.dart';
13-
14-
import '../test_utils.dart';
1511

1612
const isRPCError = TypeMatcher<RPCError>();
1713

@@ -37,17 +33,6 @@ Future<String> waitForAppId(TestProcess webdev) async {
3733
return appId;
3834
}
3935

40-
Future<String> prepareWorkspace() async {
41-
var exampleDirectory =
42-
p.absolute(p.join(p.current, '..', 'fixtures', '_webdevSoundSmoke'));
43-
44-
var process = await TestProcess.start(dartPath, ['pub', 'upgrade'],
45-
workingDirectory: exampleDirectory, environment: getPubEnvironment());
46-
47-
await process.shouldExit(0);
48-
return exampleDirectory;
49-
}
50-
5136
String? getDebugServiceUri(String line) {
5237
var regex = RegExp(r'Debug service listening on (?<wsUri>[^\s^\\]*)');
5338
var match = regex.firstMatch(line);

0 commit comments

Comments
 (0)