Split expression compiler worker tests

Expression compiler worker tests sometimes reach the timeout limit
on CI machines, split them into two batches.

Closes: https://github.com/dart-lang/sdk/issues/45484
Change-Id: I502de5d768f29be862e593379e3a906ec6c21eb0
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/213734
Reviewed-by: Nicholas Shahan <nshahan@google.com>
Reviewed-by: Mark Zhou <markzipan@google.com>
Commit-Queue: Anna Gringauze <annagrin@google.com>
diff --git a/pkg/dev_compiler/test/expression_compiler/expression_compiler_worker_amd_test.dart b/pkg/dev_compiler/test/expression_compiler/expression_compiler_worker_amd_test.dart
new file mode 100644
index 0000000..aa00557
--- /dev/null
+++ b/pkg/dev_compiler/test/expression_compiler/expression_compiler_worker_amd_test.dart
@@ -0,0 +1,19 @@
+// Copyright (c) 2021, 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.
+
+// @dart = 2.9
+
+import 'package:test/test.dart';
+
+import 'expression_compiler_worker_shared.dart';
+
+void main() async {
+  group('amd module format -', () {
+    for (var soundNullSafety in [true, false]) {
+      group('${soundNullSafety ? "sound" : "unsound"} null safety -', () {
+        runTests('amd', soundNullSafety);
+      });
+    }
+  });
+}
diff --git a/pkg/dev_compiler/test/expression_compiler/expression_compiler_worker_ddc_test.dart b/pkg/dev_compiler/test/expression_compiler/expression_compiler_worker_ddc_test.dart
new file mode 100644
index 0000000..cc272c3
--- /dev/null
+++ b/pkg/dev_compiler/test/expression_compiler/expression_compiler_worker_ddc_test.dart
@@ -0,0 +1,19 @@
+// Copyright (c) 2021, 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.
+
+// @dart = 2.9
+
+import 'package:test/test.dart';
+
+import 'expression_compiler_worker_shared.dart';
+
+void main() async {
+  group('ddc module format -', () {
+    for (var soundNullSafety in [true, false]) {
+      group('${soundNullSafety ? "sound" : "unsound"} null safety -', () {
+        runTests('ddc', soundNullSafety);
+      });
+    }
+  });
+}
diff --git a/pkg/dev_compiler/test/expression_compiler/expression_compiler_worker_test.dart b/pkg/dev_compiler/test/expression_compiler/expression_compiler_worker_shared.dart
similarity index 91%
rename from pkg/dev_compiler/test/expression_compiler/expression_compiler_worker_test.dart
rename to pkg/dev_compiler/test/expression_compiler/expression_compiler_worker_shared.dart
index 8bf3653..b1a4eac 100644
--- a/pkg/dev_compiler/test/expression_compiler/expression_compiler_worker_test.dart
+++ b/pkg/dev_compiler/test/expression_compiler/expression_compiler_worker_shared.dart
@@ -27,78 +27,68 @@
 /// Verbose mode for debugging
 bool get verbose => false;
 
-void main() async {
-  for (var moduleFormat in ['amd', 'ddc']) {
-    group('$moduleFormat module format -', () {
-      for (var soundNullSafety in [true, false]) {
-        group('${soundNullSafety ? "sound" : "unsound"} null safety -', () {
-          group('expression compiler worker on startup', () {
-            Directory tempDir;
-            ReceivePort receivePort;
+void runTests(String moduleFormat, bool soundNullSafety) {
+  group('expression compiler worker on startup', () {
+    Directory tempDir;
+    ReceivePort receivePort;
 
-            setUp(() async {
-              tempDir = Directory.systemTemp.createTempSync('foo bar');
-              receivePort = ReceivePort();
-            });
+    setUp(() async {
+      tempDir = Directory.systemTemp.createTempSync('foo bar');
+      receivePort = ReceivePort();
+    });
 
-            tearDown(() async {
-              tempDir.deleteSync(recursive: true);
-              receivePort.close();
-            });
+    tearDown(() async {
+      tempDir.deleteSync(recursive: true);
+      receivePort.close();
+    });
 
-            test('reports failure to consumer', () async {
-              expect(
-                  receivePort,
-                  emitsInOrder([
-                    equals(isA<SendPort>()),
-                    equals({
-                      'succeeded': false,
-                      'stackTrace': isNotNull,
-                      'exception': contains('Could not load SDK component'),
-                    }),
-                  ]));
+    test('reports failure to consumer', () async {
+      expect(
+          receivePort,
+          emitsInOrder([
+            equals(isA<SendPort>()),
+            equals({
+              'succeeded': false,
+              'stackTrace': isNotNull,
+              'exception': contains('Could not load SDK component'),
+            }),
+          ]));
 
-              try {
-                var badPath = 'file:///path/does/not/exist';
-                await ExpressionCompilerWorker.createAndStart(
-                  [
-                    '--libraries-file',
-                    badPath,
-                    '--dart-sdk-summary',
-                    badPath,
-                    '--module-format',
-                    moduleFormat,
-                    soundNullSafety
-                        ? '--sound-null-safety'
-                        : '--no-sound-null-safety',
-                    if (verbose) '--verbose',
-                  ],
-                  sendPort: receivePort.sendPort,
-                );
-              } catch (e) {
-                throwsA(contains('Could not load SDK component'));
-              }
-            });
-          });
-
-          group('reading assets using standard file system - ', () {
-            runExpressionCompilationTests(
-                StandardFileSystemTestDriver(soundNullSafety, moduleFormat));
-          });
-
-          group('reading assets using multiroot file system - ', () {
-            runExpressionCompilationTests(
-                MultiRootFileSystemTestDriver(soundNullSafety, moduleFormat));
-          });
-
-          group('reading assets using asset file system -', () {
-            runExpressionCompilationTests(
-                AssetFileSystemTestDriver(soundNullSafety, moduleFormat));
-          });
-        });
+      try {
+        var badPath = 'file:///path/does/not/exist';
+        await ExpressionCompilerWorker.createAndStart(
+          [
+            '--libraries-file',
+            badPath,
+            '--dart-sdk-summary',
+            badPath,
+            '--module-format',
+            moduleFormat,
+            soundNullSafety ? '--sound-null-safety' : '--no-sound-null-safety',
+            if (verbose) '--verbose',
+          ],
+          sendPort: receivePort.sendPort,
+        );
+      } catch (e) {
+        throwsA(contains('Could not load SDK component'));
       }
     });
-  }
+  });
+
+  group('reading assets using standard file system - ', () {
+    runExpressionCompilationTests(
+        StandardFileSystemTestDriver(soundNullSafety, moduleFormat));
+  });
+
+  group('reading assets using multiroot file system - ', () {
+    runExpressionCompilationTests(
+        MultiRootFileSystemTestDriver(soundNullSafety, moduleFormat));
+  });
+
+  group('reading assets using asset file system -', () {
+    runExpressionCompilationTests(
+        AssetFileSystemTestDriver(soundNullSafety, moduleFormat));
+  });
 }
 
 void runExpressionCompilationTests(TestDriver driver) {