Turn ddc and dart2js modular tests into suites and share their test cases

For this to work properly, we first need the test infrastructure to have support
for the `--output-directory` flag (see base CL)

Change-Id: I75f788d19ad3b4e9523830250c4a1c9de8418cda
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/104400
Reviewed-by: Johnni Winther <johnniwinther@google.com>
diff --git a/pkg/compiler/pubspec.yaml b/pkg/compiler/pubspec.yaml
index b34280b..2dbf1fb 100644
--- a/pkg/compiler/pubspec.yaml
+++ b/pkg/compiler/pubspec.yaml
@@ -3,7 +3,7 @@
 name: compiler
 publish_to: none
 environment:
-  sdk: '>=2.2.0 <3.0.0'
+  sdk: '>=2.3.0 <3.0.0'
 
 # NOTE: `pub get / pub upgrade` are generally not needed when working on this
 # package. The `.packages` file in the repository root will be used by default.
diff --git a/tests/compiler/dart2js/modular/modular_test.dart b/pkg/compiler/tool/modular_test_suite.dart
similarity index 95%
rename from tests/compiler/dart2js/modular/modular_test.dart
rename to pkg/compiler/tool/modular_test_suite.dart
index fd60292..a5749c9 100644
--- a/tests/compiler/dart2js/modular/modular_test.dart
+++ b/pkg/compiler/tool/modular_test_suite.dart
@@ -15,15 +15,13 @@
 import 'package:modular_test/src/suite.dart';
 import 'package:modular_test/src/runner.dart';
 
-Uri sdkRoot = Platform.script.resolve("../../../../");
+Uri sdkRoot = Platform.script.resolve("../../../");
 Options _options;
 main(List<String> args) async {
   _options = Options.parse(args);
-  var suiteFolder = Platform.script.resolve('data/');
-  var suiteName = relativize(suiteFolder, sdkRoot).path;
   await runSuite(
-      suiteFolder,
-      suiteName.substring(0, suiteName.length - 1), // remove trailing /
+      sdkRoot.resolve('tests/modular/'),
+      'tests/modular',
       _options,
       new IOPipeline([
         SourceToDillStep(),
@@ -113,7 +111,6 @@
     await File.fromUri(root.resolve('.packages'))
         .writeAsString('$packagesContents');
 
-    var sdkRoot = Platform.script.resolve("../../../../");
     List<String> sources;
     List<String> extraArgs;
     if (module.isSdk) {
@@ -191,7 +188,6 @@
     Set<Module> transitiveDependencies = computeTransitiveDependencies(module);
     Iterable<String> dillDependencies =
         transitiveDependencies.map((m) => '${toUri(m, dillId)}');
-    var sdkRoot = Platform.script.resolve("../../../../");
     List<String> args = [
       '--packages=${sdkRoot.toFilePath()}/.packages',
       'package:compiler/src/dart2js.dart',
@@ -241,7 +237,6 @@
   Future<void> execute(Module module, Uri root, ModuleDataToRelativeUri toUri,
       List<String> flags) async {
     if (_options.verbose) print("\nstep: dart2js backend on $module");
-    var sdkRoot = Platform.script.resolve("../../../../");
     List<String> args = [
       '--packages=${sdkRoot.toFilePath()}/.packages',
       'package:compiler/src/dart2js.dart',
@@ -331,7 +326,6 @@
   Future<void> execute(Module module, Uri root, ModuleDataToRelativeUri toUri,
       List<String> flags) async {
     if (_options.verbose) print("\nstep: d8 on $module");
-    var sdkRoot = Platform.script.resolve("../../../../");
     List<String> d8Args = [
       sdkRoot
           .resolve('sdk/lib/_internal/js_runtime/lib/preambles/d8.js')
diff --git a/pkg/dev_compiler/test/modular/data/js_interop/.packages b/pkg/dev_compiler/test/modular/data/js_interop/.packages
deleted file mode 100644
index 68d6156..0000000
--- a/pkg/dev_compiler/test/modular/data/js_interop/.packages
+++ /dev/null
@@ -1 +0,0 @@
-js:../../../../../../pkg/js/lib
diff --git a/pkg/dev_compiler/test/modular/modular_test.dart b/pkg/dev_compiler/test/modular_suite.dart
similarity index 95%
rename from pkg/dev_compiler/test/modular/modular_test.dart
rename to pkg/dev_compiler/test/modular_suite.dart
index a917ed1..2b3e170 100644
--- a/pkg/dev_compiler/test/modular/modular_test.dart
+++ b/pkg/dev_compiler/test/modular_suite.dart
@@ -12,15 +12,13 @@
 import 'package:modular_test/src/suite.dart';
 import 'package:modular_test/src/runner.dart';
 
-Uri sdkRoot = Platform.script.resolve("../../../../");
+Uri sdkRoot = Platform.script.resolve("../../../");
 Options _options;
 main(List<String> args) async {
   _options = Options.parse(args);
-  var suiteFolder = Platform.script.resolve('data/');
-  var suiteName = relativize(suiteFolder, sdkRoot).path;
   await runSuite(
-      suiteFolder,
-      suiteName.substring(0, suiteName.length - 1), // remove trailing /
+      sdkRoot.resolve('tests/modular/'),
+      'tests/modular',
       _options,
       new IOPipeline([
         SourceToSummaryDillStep(),
@@ -129,7 +127,6 @@
   Future<void> execute(Module module, Uri root, ModuleDataToRelativeUri toUri,
       List<String> flags) async {
     if (_options.verbose) print("\nstep: ddk on $module");
-    var sdkRoot = Platform.script.resolve("../../../../");
 
     Set<Module> transitiveDependencies = computeTransitiveDependencies(module);
     _createPackagesFile(module, root, transitiveDependencies);
@@ -206,7 +203,6 @@
   Future<void> execute(Module module, Uri root, ModuleDataToRelativeUri toUri,
       List<String> flags) async {
     if (_options.verbose) print("\nstep: d8 on $module");
-    var sdkRoot = Platform.script.resolve("../../../../");
 
     // Rename sdk.js to dart_sdk.js (the alternative, but more hermetic solution
     // would be to rename the import on all other .js files, but seems
diff --git a/tests/compiler/dart2js/modular/data/int_js_number/def.dart b/tests/modular/int_js_number/def.dart
similarity index 100%
rename from tests/compiler/dart2js/modular/data/int_js_number/def.dart
rename to tests/modular/int_js_number/def.dart
diff --git a/tests/compiler/dart2js/modular/data/int_js_number/main.dart b/tests/modular/int_js_number/main.dart
similarity index 100%
rename from tests/compiler/dart2js/modular/data/int_js_number/main.dart
rename to tests/modular/int_js_number/main.dart
diff --git a/tests/compiler/dart2js/modular/data/int_js_number/modules.yaml b/tests/modular/int_js_number/modules.yaml
similarity index 100%
rename from tests/compiler/dart2js/modular/data/int_js_number/modules.yaml
rename to tests/modular/int_js_number/modules.yaml
diff --git a/tests/modular/js_interop/.packages b/tests/modular/js_interop/.packages
new file mode 100644
index 0000000..fce126f
--- /dev/null
+++ b/tests/modular/js_interop/.packages
@@ -0,0 +1 @@
+js:../../../pkg/js/lib
diff --git a/pkg/dev_compiler/test/modular/data/js_interop/log.dart b/tests/modular/js_interop/log.dart
similarity index 100%
rename from pkg/dev_compiler/test/modular/data/js_interop/log.dart
rename to tests/modular/js_interop/log.dart
diff --git a/pkg/dev_compiler/test/modular/data/js_interop/main.dart b/tests/modular/js_interop/main.dart
similarity index 100%
rename from pkg/dev_compiler/test/modular/data/js_interop/main.dart
rename to tests/modular/js_interop/main.dart
diff --git a/pkg/dev_compiler/test/modular/data/js_interop/modules.yaml b/tests/modular/js_interop/modules.yaml
similarity index 100%
rename from pkg/dev_compiler/test/modular/data/js_interop/modules.yaml
rename to tests/modular/js_interop/modules.yaml
diff --git a/tests/compiler/dart2js/modular/data/package_imports/.packages b/tests/modular/package_imports/.packages
similarity index 100%
rename from tests/compiler/dart2js/modular/data/package_imports/.packages
rename to tests/modular/package_imports/.packages
diff --git a/tests/compiler/dart2js/modular/data/package_imports/a/a.dart b/tests/modular/package_imports/a/a.dart
similarity index 100%
rename from tests/compiler/dart2js/modular/data/package_imports/a/a.dart
rename to tests/modular/package_imports/a/a.dart
diff --git a/tests/compiler/dart2js/modular/data/package_imports/f0.dart b/tests/modular/package_imports/f0.dart
similarity index 100%
rename from tests/compiler/dart2js/modular/data/package_imports/f0.dart
rename to tests/modular/package_imports/f0.dart
diff --git a/tests/compiler/dart2js/modular/data/package_imports/f1.dart b/tests/modular/package_imports/f1.dart
similarity index 100%
rename from tests/compiler/dart2js/modular/data/package_imports/f1.dart
rename to tests/modular/package_imports/f1.dart
diff --git a/tests/compiler/dart2js/modular/data/package_imports/f3.dart b/tests/modular/package_imports/f3.dart
similarity index 100%
rename from tests/compiler/dart2js/modular/data/package_imports/f3.dart
rename to tests/modular/package_imports/f3.dart
diff --git a/tests/compiler/dart2js/modular/data/package_imports/main.dart b/tests/modular/package_imports/main.dart
similarity index 100%
rename from tests/compiler/dart2js/modular/data/package_imports/main.dart
rename to tests/modular/package_imports/main.dart
diff --git a/tests/compiler/dart2js/modular/data/package_imports/modules.yaml b/tests/modular/package_imports/modules.yaml
similarity index 100%
rename from tests/compiler/dart2js/modular/data/package_imports/modules.yaml
rename to tests/modular/package_imports/modules.yaml
diff --git a/tests/compiler/dart2js/modular/data/subclass/a/a.dart b/tests/modular/subclass/a/a.dart
similarity index 100%
rename from tests/compiler/dart2js/modular/data/subclass/a/a.dart
rename to tests/modular/subclass/a/a.dart
diff --git a/tests/compiler/dart2js/modular/data/subclass/f0.dart b/tests/modular/subclass/f0.dart
similarity index 100%
rename from tests/compiler/dart2js/modular/data/subclass/f0.dart
rename to tests/modular/subclass/f0.dart
diff --git a/tests/compiler/dart2js/modular/data/subclass/f1.dart b/tests/modular/subclass/f1.dart
similarity index 100%
rename from tests/compiler/dart2js/modular/data/subclass/f1.dart
rename to tests/modular/subclass/f1.dart
diff --git a/tests/compiler/dart2js/modular/data/subclass/main.dart b/tests/modular/subclass/main.dart
similarity index 100%
rename from tests/compiler/dart2js/modular/data/subclass/main.dart
rename to tests/modular/subclass/main.dart
diff --git a/tests/compiler/dart2js/modular/data/subclass/modules.yaml b/tests/modular/subclass/modules.yaml
similarity index 100%
rename from tests/compiler/dart2js/modular/data/subclass/modules.yaml
rename to tests/modular/subclass/modules.yaml
diff --git a/tools/bots/test_matrix.json b/tools/bots/test_matrix.json
index 0f6de4e..8f7a188 100644
--- a/tools/bots/test_matrix.json
+++ b/tools/bots/test_matrix.json
@@ -889,6 +889,16 @@
           ]
         },
         {
+          "name": "ddc kernel modular tests",
+          "script": "out/ReleaseX64/dart",
+          "testRunner": true,
+          "arguments": [
+            "pkg/dev_compiler/test/modular_suite.dart",
+            "--configuration-name",
+            "dartdevk-${system}-release"
+          ]
+        },
+        {
           "name": "ddc sourcemap tests",
           "script": "out/ReleaseX64/dart",
           "arguments": [
@@ -985,6 +995,16 @@
           ]
         },
         {
+          "name": "ddc kernel modular tests",
+          "script": "xcodebuild/ReleaseX64/dart",
+          "testRunner": true,
+          "arguments": [
+            "pkg/dev_compiler/test/modular_suite.dart",
+            "--configuration-name",
+            "dartdevk-${system}-release"
+          ]
+        },
+        {
           "name": "ddc sourcemap tests",
           "script": "xcodebuild/ReleaseX64/dart",
           "arguments": [
@@ -1140,6 +1160,16 @@
             "dart2js",
             "pkg//compiler/"
           ]
+        },
+        {
+          "name": "dart2js modular tests",
+          "script": "out/ReleaseX64/dart",
+          "testRunner": true,
+          "arguments": [
+            "pkg/compiler/tool/modular_test_suite.dart",
+            "--configuration-name",
+            "dart2js-${system}-release-d8"
+          ]
         }
       ]
     },