Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(208)

Unified Diff: tools/testing/dart/compiler_configuration.dart

Issue 2955513002: Dynamically load packages for dartdevc tests in test.dart. (Closed)
Patch Set: Remove TODO that's TODONE. Created 3 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « tools/testing/dart/browser_test.dart ('k') | tools/testing/dart/test_suite.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tools/testing/dart/compiler_configuration.dart
diff --git a/tools/testing/dart/compiler_configuration.dart b/tools/testing/dart/compiler_configuration.dart
index 94f1420b9bb7d41f70a3e0ddb93f6a86aa239cb0..6a1d4d4cbb52ce5b78cf7aefc11e6c1db475b4d8 100644
--- a/tools/testing/dart/compiler_configuration.dart
+++ b/tools/testing/dart/compiler_configuration.dart
@@ -83,7 +83,7 @@ abstract class CompilerConfiguration {
// TODO(ahe): It shouldn't be necessary to pass [buildDir] to any of these
// functions. It is fixed for a given configuration.
- String computeCompilerPath(String buildDir) {
+ String computeCompilerPath() {
throw "Unknown compiler for: $runtimeType";
}
@@ -91,9 +91,17 @@ abstract class CompilerConfiguration {
String get executableScriptSuffix => Platform.isWindows ? '.bat' : '';
- List<Uri> bootstrapDependencies(String buildDir) => const <Uri>[];
+ List<Uri> bootstrapDependencies() => const <Uri>[];
- CommandArtifact computeCompilationArtifact(String buildDir, String tempDir,
+ /// Creates a [Command] to compile [inputFile] to [outputFile].
+ Command createCommand(String inputFile, String outputFile) {
+ // TODO(rnystrom): See if this method can be unified with
+ // computeCompilationArtifact() and/or computeCompilerArguments() for the
+ // other compilers.
+ throw new UnsupportedError("$this does not support createCommand().");
+ }
+
+ CommandArtifact computeCompilationArtifact(String tempDir,
List<String> arguments, Map<String, String> environmentOverrides) {
return new CommandArtifact([], null, null);
}
@@ -105,7 +113,6 @@ abstract class CompilerConfiguration {
List<String> computeRuntimeArguments(
RuntimeConfiguration runtimeConfiguration,
- String buildDir,
TestInformation info,
List<String> vmOptions,
List<String> sharedOptions,
@@ -126,12 +133,12 @@ class NoneCompilerConfiguration extends CompilerConfiguration {
List<String> computeRuntimeArguments(
RuntimeConfiguration runtimeConfiguration,
- String buildDir,
TestInformation info,
List<String> vmOptions,
List<String> sharedOptions,
List<String> originalArguments,
CommandArtifact artifact) {
+ var buildDir = _configuration.buildDirectory;
var args = <String>[];
if (useDfe) {
args.add('--dfe=${buildDir}/gen/kernel-service.dart.snapshot');
@@ -205,7 +212,7 @@ class ComposedCompilerConfiguration extends CompilerConfiguration {
Configuration configuration, this.pipelineCommands)
: super._subclass(configuration);
- CommandArtifact computeCompilationArtifact(String buildDir, String tempDir,
+ CommandArtifact computeCompilationArtifact(String tempDir,
List<String> globalArguments, Map<String, String> environmentOverrides) {
var allCommands = <Command>[];
@@ -213,8 +220,7 @@ class ComposedCompilerConfiguration extends CompilerConfiguration {
var arguments = pipelineCommands[0].extractArguments(globalArguments, null);
CommandArtifact artifact = pipelineCommands[0]
.compilerConfiguration
- .computeCompilationArtifact(
- buildDir, tempDir, arguments, environmentOverrides);
+ .computeCompilationArtifact(tempDir, arguments, environmentOverrides);
allCommands.addAll(artifact.commands);
// The following compilation commands are based on the output of the
@@ -223,8 +229,8 @@ class ComposedCompilerConfiguration extends CompilerConfiguration {
PipelineCommand command = pipelineCommands[i];
arguments = command.extractArguments(globalArguments, artifact.filename);
- artifact = command.compilerConfiguration.computeCompilationArtifact(
- buildDir, tempDir, arguments, environmentOverrides);
+ artifact = command.compilerConfiguration
+ .computeCompilationArtifact(tempDir, arguments, environmentOverrides);
allCommands.addAll(artifact.commands);
}
@@ -241,7 +247,6 @@ class ComposedCompilerConfiguration extends CompilerConfiguration {
List<String> computeRuntimeArguments(
RuntimeConfiguration runtimeConfiguration,
- String buildDir,
TestInformation info,
List<String> vmOptions,
List<String> sharedOptions,
@@ -251,7 +256,6 @@ class ComposedCompilerConfiguration extends CompilerConfiguration {
pipelineCommands.last.compilerConfiguration;
return lastCompilerConfiguration.computeRuntimeArguments(
runtimeConfiguration,
- buildDir,
info,
vmOptions,
sharedOptions,
@@ -268,7 +272,7 @@ class Dart2xCompilerConfiguration extends CompilerConfiguration {
Dart2xCompilerConfiguration(this.moniker, Configuration configuration)
: super._subclass(configuration);
- String computeCompilerPath(String buildDir) {
+ String computeCompilerPath() {
var prefix = 'sdk/bin';
var suffix = executableScriptSuffix;
@@ -280,33 +284,28 @@ class Dart2xCompilerConfiguration extends CompilerConfiguration {
}
if (_useSdk) {
- prefix = '$buildDir/dart-sdk/bin';
+ prefix = '${_configuration.buildDirectory}/dart-sdk/bin';
}
return '$prefix/dart2js$suffix';
}
- Command computeCompilationCommand(String outputFileName, String buildDir,
+ Command computeCompilationCommand(String outputFileName,
List<String> arguments, Map<String, String> environmentOverrides) {
arguments = arguments.toList();
arguments.add('--out=$outputFileName');
- return Command.compilation(
- moniker,
- outputFileName,
- bootstrapDependencies(buildDir),
- computeCompilerPath(buildDir),
- arguments,
- environmentOverrides,
+ return Command.compilation(moniker, outputFileName, bootstrapDependencies(),
+ computeCompilerPath(), arguments, environmentOverrides,
alwaysCompile: !_useSdk);
}
- List<Uri> bootstrapDependencies(String buildDir) {
+ List<Uri> bootstrapDependencies() {
if (!_useSdk) return const <Uri>[];
return _bootstrapDependenciesCache.putIfAbsent(
- buildDir,
+ _configuration.buildDirectory,
() => [
Uri.base
- .resolveUri(new Uri.directory(buildDir))
+ .resolveUri(new Uri.directory(_configuration.buildDirectory))
.resolve('dart-sdk/bin/snapshots/dart2js.dart.snapshot')
]);
}
@@ -325,26 +324,25 @@ class Dart2jsCompilerConfiguration extends Dart2xCompilerConfiguration {
return multiplier;
}
- CommandArtifact computeCompilationArtifact(String buildDir, String tempDir,
+ CommandArtifact computeCompilationArtifact(String tempDir,
List<String> arguments, Map<String, String> environmentOverrides) {
var compilerArguments = arguments.toList()
..addAll(_configuration.dart2jsOptions);
return new CommandArtifact([
computeCompilationCommand(
- '$tempDir/out.js', buildDir, compilerArguments, environmentOverrides)
+ '$tempDir/out.js', compilerArguments, environmentOverrides)
], '$tempDir/out.js', 'application/javascript');
}
List<String> computeRuntimeArguments(
RuntimeConfiguration runtimeConfiguration,
- String buildDir,
TestInformation info,
List<String> vmOptions,
List<String> sharedOptions,
List<String> originalArguments,
CommandArtifact artifact) {
Uri sdk = _useSdk
- ? new Uri.directory(buildDir).resolve('dart-sdk/')
+ ? new Uri.directory(_configuration.buildDirectory).resolve('dart-sdk/')
: new Uri.directory(TestUtils.dartDir.toNativePath()).resolve('sdk/');
Uri preambleDir = sdk.resolve('lib/_internal/js_runtime/lib/preambles/');
return runtimeConfiguration.dart2jsPreambles(preambleDir)
@@ -357,42 +355,55 @@ class DartdevcCompilerConfiguration extends CompilerConfiguration {
DartdevcCompilerConfiguration(Configuration configuration)
: super._subclass(configuration);
- String computeCompilerPath(String buildDir) {
- var dir = _useSdk ? "$buildDir/dart-sdk" : "sdk";
+ String computeCompilerPath() {
+ var dir = _useSdk ? "${_configuration.buildDirectory}/dart-sdk" : "sdk";
return "$dir/bin/dartdevc$executableScriptSuffix";
}
- CommandArtifact computeCompilationArtifact(String buildDir, String tempDir,
- List<String> arguments, Map<String, String> environmentOverrides) {
- // TODO(rnystrom): There is a lot of overlap between this code and
- // _dartdevcCompileCommand() in test_suite.dart. This code path is only hit
- // when the test is expected to have a compile error. Consider refactoring
- // to unify the two (and likewise for dart2js).
+ Command createCommand(String inputFile, String outputFile) {
+ var moduleRoot =
+ new Path(outputFile).directoryPath.directoryPath.toString();
- // TODO(rnystrom): Are there other arguments here that we need to keep?
- // What about arguments specified in the test itself?
- var inputFile = arguments.last;
-
- var compilerArguments = [
+ var args = [
"--dart-sdk",
- "$buildDir/dart-sdk",
+ "${_configuration.buildDirectory}/dart-sdk",
"--library-root",
new Path(inputFile).directoryPath.toString(),
+ "--module-root",
+ moduleRoot,
+ "--no-summarize",
+ "--no-source-map",
"-o",
- "$tempDir/out.js",
- inputFile
+ outputFile,
+ inputFile,
];
- var command = Command.compilation(
- Compiler.dartdevc.name,
- "$tempDir/out.js",
- bootstrapDependencies(buildDir),
- computeCompilerPath(buildDir),
- compilerArguments,
- environmentOverrides);
+ // Link to the summaries for the available packages, so that they don't
+ // get recompiled into the test's own module.
+ for (var package in testPackages) {
+ args.add("-s");
+
+ // Since the summaries for the packages are not near the tests, we give
+ // dartdevc explicit module paths for each one. When the test is run, we
+ // will tell require.js where to find each package's compiled JS.
+ var summary = _configuration.buildDirectory +
+ "/gen/utils/dartdevc/pkg/$package.sum";
+ args.add("$summary:$package");
+ }
- return new CommandArtifact(
- [command], "$tempDir/out.js", "application/javascript");
+ return Command.compilation(Compiler.dartdevc.name, outputFile,
+ bootstrapDependencies(), computeCompilerPath(), args, const {});
+ }
+
+ CommandArtifact computeCompilationArtifact(String tempDir,
+ List<String> arguments, Map<String, String> environmentOverrides) {
+ // TODO(rnystrom): Are there other arguments here that we need to keep?
+ // What about arguments specified in the test itself?
+ var inputFile = arguments.last;
+ var outputFile = "$tempDir/${inputFile.replaceAll('.dart', '.js')}";
+
+ return new CommandArtifact([createCommand(inputFile, outputFile)],
+ outputFile, "application/javascript");
}
}
@@ -414,26 +425,26 @@ class PrecompilerCompilerConfiguration extends CompilerConfiguration {
return multiplier;
}
- CommandArtifact computeCompilationArtifact(String buildDir, String tempDir,
+ CommandArtifact computeCompilationArtifact(String tempDir,
List<String> arguments, Map<String, String> environmentOverrides) {
var commands = [
- computeCompilationCommand(
- tempDir, buildDir, arguments, environmentOverrides)
+ computeCompilationCommand(tempDir, arguments, environmentOverrides)
];
if (!_configuration.useBlobs) {
- commands.add(computeAssembleCommand(
- tempDir, buildDir, arguments, environmentOverrides));
+ commands.add(
+ computeAssembleCommand(tempDir, arguments, environmentOverrides));
commands.add(computeRemoveAssemblyCommand(
- tempDir, buildDir, arguments, environmentOverrides));
+ tempDir, arguments, environmentOverrides));
}
return new CommandArtifact(
commands, '$tempDir', 'application/dart-precompiled');
}
- Command computeCompilationCommand(String tempDir, String buildDir,
- List<String> arguments, Map<String, String> environmentOverrides) {
+ Command computeCompilationCommand(String tempDir, List<String> arguments,
+ Map<String, String> environmentOverrides) {
+ var buildDir = _configuration.buildDirectory;
String exec;
if (_isAndroid) {
if (_isArm) {
@@ -465,13 +476,13 @@ class PrecompilerCompilerConfiguration extends CompilerConfiguration {
args.addAll(arguments);
- return Command.compilation('precompiler', tempDir,
- bootstrapDependencies(buildDir), exec, args, environmentOverrides,
+ return Command.compilation('precompiler', tempDir, bootstrapDependencies(),
+ exec, args, environmentOverrides,
alwaysCompile: !_useSdk);
}
- Command computeAssembleCommand(String tempDir, String buildDir,
- List arguments, Map<String, String> environmentOverrides) {
+ Command computeAssembleCommand(String tempDir, List arguments,
+ Map<String, String> environmentOverrides) {
String cc, shared, ldFlags;
if (_isAndroid) {
var ndk = "third_party/android_tools/ndk";
@@ -527,20 +538,20 @@ class PrecompilerCompilerConfiguration extends CompilerConfiguration {
args.add('$tempDir/out.aotsnapshot');
args.add('$tempDir/out.S');
- return Command.compilation('assemble', tempDir,
- bootstrapDependencies(buildDir), exec, args, environmentOverrides,
+ return Command.compilation('assemble', tempDir, bootstrapDependencies(),
+ exec, args, environmentOverrides,
alwaysCompile: !_useSdk);
}
// This step reduces the amount of space needed to run the precompilation
// tests by 60%.
- Command computeRemoveAssemblyCommand(String tempDir, String buildDir,
- List arguments, Map<String, String> environmentOverrides) {
+ Command computeRemoveAssemblyCommand(String tempDir, List arguments,
+ Map<String, String> environmentOverrides) {
var exec = 'rm';
var args = ['$tempDir/out.S'];
return Command.compilation('remove_assembly', tempDir,
- bootstrapDependencies(buildDir), exec, args, environmentOverrides,
+ bootstrapDependencies(), exec, args, environmentOverrides,
alwaysCompile: !_useSdk);
}
@@ -568,7 +579,6 @@ class PrecompilerCompilerConfiguration extends CompilerConfiguration {
List<String> computeRuntimeArguments(
RuntimeConfiguration runtimeConfiguration,
- String buildDir,
TestInformation info,
List<String> vmOptions,
List<String> sharedOptions,
@@ -607,24 +617,24 @@ class AppJitCompilerConfiguration extends CompilerConfiguration {
return multiplier;
}
- CommandArtifact computeCompilationArtifact(String buildDir, String tempDir,
+ CommandArtifact computeCompilationArtifact(String tempDir,
List<String> arguments, Map<String, String> environmentOverrides) {
var snapshot = "$tempDir/out.jitsnapshot";
- return new CommandArtifact([
- computeCompilationCommand(
- tempDir, buildDir, arguments, environmentOverrides)
- ], snapshot, 'application/dart-snapshot');
+ return new CommandArtifact(
+ [computeCompilationCommand(tempDir, arguments, environmentOverrides)],
+ snapshot,
+ 'application/dart-snapshot');
}
- Command computeCompilationCommand(String tempDir, String buildDir,
- List<String> arguments, Map<String, String> environmentOverrides) {
- var exec = "$buildDir/dart";
+ Command computeCompilationCommand(String tempDir, List<String> arguments,
+ Map<String, String> environmentOverrides) {
+ var exec = "${_configuration.buildDirectory}/dart";
var snapshot = "$tempDir/out.jitsnapshot";
var args = ["--snapshot=$snapshot", "--snapshot-kind=app-jit"];
args.addAll(arguments);
- return Command.compilation('app_jit', tempDir,
- bootstrapDependencies(buildDir), exec, args, environmentOverrides,
+ return Command.compilation('app_jit', tempDir, bootstrapDependencies(),
+ exec, args, environmentOverrides,
alwaysCompile: !_useSdk);
}
@@ -643,7 +653,6 @@ class AppJitCompilerConfiguration extends CompilerConfiguration {
List<String> computeRuntimeArguments(
RuntimeConfiguration runtimeConfiguration,
- String buildDir,
TestInformation info,
List<String> vmOptions,
List<String> sharedOptions,
@@ -670,7 +679,7 @@ class AnalyzerCompilerConfiguration extends CompilerConfiguration {
int get timeoutMultiplier => 4;
- String computeCompilerPath(String buildDir) {
+ String computeCompilerPath() {
var prefix = 'sdk/bin';
String suffix = executableScriptSuffix;
if (_isHostChecked) {
@@ -683,12 +692,12 @@ class AnalyzerCompilerConfiguration extends CompilerConfiguration {
return '$prefix/dartanalyzer_developer$suffix';
}
if (_useSdk) {
- prefix = '$buildDir/dart-sdk/bin';
+ prefix = '${_configuration.buildDirectory}/dart-sdk/bin';
}
return '$prefix/dartanalyzer$suffix';
}
- CommandArtifact computeCompilationArtifact(String buildDir, String tempDir,
+ CommandArtifact computeCompilationArtifact(String tempDir,
List<String> arguments, Map<String, String> environmentOverrides) {
arguments = arguments.toList();
if (_isChecked || _isStrong) {
@@ -700,14 +709,12 @@ class AnalyzerCompilerConfiguration extends CompilerConfiguration {
// Since this is not a real compilation, no artifacts are produced.
return new CommandArtifact([
- Command.analysis(
- computeCompilerPath(buildDir), arguments, environmentOverrides)
+ Command.analysis(computeCompilerPath(), arguments, environmentOverrides)
], null, null);
}
List<String> computeRuntimeArguments(
RuntimeConfiguration runtimeConfiguration,
- String buildDir,
TestInformation info,
List<String> vmOptions,
List<String> sharedOptions,
« no previous file with comments | « tools/testing/dart/browser_test.dart ('k') | tools/testing/dart/test_suite.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698