| Index: tools/testing/dart/test_runner.dart
|
| diff --git a/tools/testing/dart/test_runner.dart b/tools/testing/dart/test_runner.dart
|
| index 00a2ebb9b4cecc854075f593e26cf25e288e6c78..7b1e5965389c7abc8ae48df392892cb83701b83c 100644
|
| --- a/tools/testing/dart/test_runner.dart
|
| +++ b/tools/testing/dart/test_runner.dart
|
| @@ -221,6 +221,20 @@ class CompilationCommand extends ProcessCommand {
|
| deepJsonCompare(_bootstrapDependencies, other._bootstrapDependencies);
|
| }
|
|
|
| +class KernelCompilationCommand extends CompilationCommand {
|
| + KernelCompilationCommand._(
|
| + String displayName,
|
| + String outputFile,
|
| + bool neverSkipCompilation,
|
| + List<Uri> bootstrapDependencies,
|
| + String executable,
|
| + List<String> arguments,
|
| + Map<String, String> environmentOverrides)
|
| + : super._(displayName, outputFile, neverSkipCompilation,
|
| + bootstrapDependencies, executable, arguments,
|
| + environmentOverrides);
|
| +}
|
| +
|
| /// This is just a Pair(String, Map) class with hashCode and operator ==
|
| class AddFlagsKey {
|
| final String flags;
|
| @@ -650,6 +664,25 @@ class CommandBuilder {
|
| return _getUniqueCommand(command);
|
| }
|
|
|
| + CompilationCommand getKernelCompilationCommand(
|
| + String displayName,
|
| + outputFile,
|
| + neverSkipCompilation,
|
| + List<Uri> bootstrapDependencies,
|
| + String executable,
|
| + List<String> arguments,
|
| + Map<String, String> environment) {
|
| + var command = new KernelCompilationCommand._(
|
| + displayName,
|
| + outputFile,
|
| + neverSkipCompilation,
|
| + bootstrapDependencies,
|
| + executable,
|
| + arguments,
|
| + environment);
|
| + return _getUniqueCommand(command);
|
| + }
|
| +
|
| AnalysisCommand getAnalysisCommand(
|
| String displayName, executable, arguments, environmentOverrides,
|
| {String flavor: 'dart2analyzer'}) {
|
| @@ -1609,6 +1642,29 @@ class CompilationCommandOutputImpl extends CommandOutputImpl {
|
| }
|
| }
|
|
|
| +class KernelCompilationCommandOutputImpl extends CompilationCommandOutputImpl {
|
| + KernelCompilationCommandOutputImpl(
|
| + Command command, int exitCode, bool timedOut,
|
| + List<int> stdout, List<int> stderr,
|
| + Duration time, bool compilationSkipped)
|
| + : super(command, exitCode, timedOut, stdout, stderr, time,
|
| + compilationSkipped);
|
| +
|
| + bool get canRunDependendCommands {
|
| + // See [BatchRunnerProcess]: 0 means success, 1 means compile-time error.
|
| + // TODO(asgerf): When the frontend supports it, continue running even if
|
| + // there were compile-time errors. See kernel_sdk issue #18.
|
| + return !hasCrashed && !timedOut && exitCode == 0;
|
| + }
|
| +
|
| + // If the compiler was able to produce a Kernel IR file we want to run the
|
| + // result on the Dart VM. We therefore mark the [KernelCompilationCommand] as
|
| + // successful.
|
| + // => This ensures we test that the DartVM produces correct CompileTime errors
|
| + // as it is supposed to for our test suites.
|
| + bool get successful => canRunDependendCommands;
|
| +}
|
| +
|
| class JsCommandlineOutputImpl extends CommandOutputImpl
|
| with UnittestSuiteMessagesMixin {
|
| JsCommandlineOutputImpl(Command command, int exitCode, bool timedOut,
|
| @@ -1683,6 +1739,9 @@ CommandOutput createCommandOutput(Command command, int exitCode, bool timedOut,
|
| } else if (command is VmCommand) {
|
| return new VmCommandOutputImpl(
|
| command, exitCode, timedOut, stdout, stderr, time, pid);
|
| + } else if (command is KernelCompilationCommand) {
|
| + return new KernelCompilationCommandOutputImpl(
|
| + command, exitCode, timedOut, stdout, stderr, time, compilationSkipped);
|
| } else if (command is AdbPrecompilationCommand) {
|
| return new VmCommandOutputImpl(
|
| command, exitCode, timedOut, stdout, stderr, time, pid);
|
| @@ -2549,6 +2608,12 @@ class CommandExecutorImpl implements CommandExecutor {
|
|
|
| if (command is BrowserTestCommand) {
|
| return _startBrowserControllerTest(command, timeout);
|
| + } else if (command is KernelCompilationCommand) {
|
| + // For now, we always run dartk in batch mode.
|
| + var name = command.displayName;
|
| + assert(name == 'dartk');
|
| + return _getBatchRunner(name)
|
| + .runCommand(name, command, timeout, command.arguments);
|
| } else if (command is CompilationCommand && dart2jsBatchMode) {
|
| return _getBatchRunner("dart2js")
|
| .runCommand("dart2js", command, timeout, command.arguments);
|
|
|