| Index: tools/testing/dart/test_runner.dart
|
| diff --git a/tools/testing/dart/test_runner.dart b/tools/testing/dart/test_runner.dart
|
| index bc6be6491449219ff5f13c0576efd72a2ab3e535..d836242fcb99901dc861b274cceef8498e3f1861 100644
|
| --- a/tools/testing/dart/test_runner.dart
|
| +++ b/tools/testing/dart/test_runner.dart
|
| @@ -139,7 +139,7 @@ class ProcessCommand extends Command {
|
| (io.Platform.operatingSystem == 'windows')
|
| ? env.write('set $key=${escapeCommandLineArgument(value)} & ')
|
| : env.write('$key=${escapeCommandLineArgument(value)} '));
|
| - var command = ([executable]..addAll(arguments))
|
| + var command = ([executable]..addAll(batchArguments)..addAll(arguments))
|
| .map(escapeCommandLineArgument)
|
| .join(' ');
|
| if (workingDirectory != null) {
|
| @@ -149,6 +149,11 @@ class ProcessCommand extends Command {
|
| }
|
|
|
| Future<bool> get outputIsUpToDate => new Future.value(false);
|
| +
|
| + /// Arguments that are passed to the process when starting batch mode.
|
| + ///
|
| + /// In non-batch mode, they should be passed before [arguments].
|
| + List<String> get batchArguments => const [];
|
| }
|
|
|
| class CompilationCommand extends ProcessCommand {
|
| @@ -362,6 +367,35 @@ class VmCommand extends ProcessCommand {
|
| : super._("vm", executable, arguments, environmentOverrides);
|
| }
|
|
|
| +class VmBatchCommand extends ProcessCommand implements VmCommand {
|
| + final String dartFile;
|
| + final bool checked;
|
| +
|
| + VmBatchCommand._(String executable, String dartFile, List<String> arguments,
|
| + Map<String, String> environmentOverrides, {this.checked: true})
|
| + : this.dartFile = dartFile,
|
| + super._('vm-batch', executable, arguments, environmentOverrides);
|
| +
|
| + @override
|
| + List<String> get batchArguments => checked
|
| + ? ['--checked', dartFile]
|
| + : [dartFile];
|
| +
|
| + @override
|
| + bool _equal(VmBatchCommand other) {
|
| + return super._equal(other) &&
|
| + dartFile == other.dartFile &&
|
| + checked == other.checked;
|
| + }
|
| +
|
| + @override
|
| + void _buildHashCode(HashCodeBuilder builder) {
|
| + super._buildHashCode(builder);
|
| + builder.addJson(dartFile);
|
| + builder.addJson(checked);
|
| + }
|
| +}
|
| +
|
| class AdbPrecompilationCommand extends Command {
|
| final String precompiledRunnerFilename;
|
| final String processTestFilename;
|
| @@ -701,6 +735,15 @@ class CommandBuilder {
|
| return _getUniqueCommand(command);
|
| }
|
|
|
| + VmBatchCommand getVmBatchCommand(String executable, String tester,
|
| + List<String> arguments, Map<String, String> environmentOverrides,
|
| + {bool checked: true}) {
|
| + var command =
|
| + new VmBatchCommand._(executable, tester, arguments, environmentOverrides,
|
| + checked: checked);
|
| + return _getUniqueCommand(command);
|
| + }
|
| +
|
| AdbPrecompilationCommand getAdbPrecompiledCommand(String precompiledRunner,
|
| String processTest,
|
| String testDirectory,
|
| @@ -848,7 +891,7 @@ class TestCase extends UniqueObject {
|
| bool get expectCompileError => _expectations & EXPECT_COMPILE_ERROR != 0;
|
|
|
| bool get unexpectedOutput {
|
| - var outcome = lastCommandOutput.result(this);
|
| + var outcome = this.result;
|
| return !expectedOutcomes.any((expectation) {
|
| return outcome.canBeOutcomeOf(expectation);
|
| });
|
| @@ -2181,7 +2224,7 @@ class BatchRunnerProcess {
|
| _startProcess(callback) {
|
| assert(_command is ProcessCommand);
|
| var executable = _command.executable;
|
| - var arguments = ['--batch'];
|
| + var arguments = []..addAll(_command.batchArguments)..add('--batch');
|
| var environment = new Map.from(io.Platform.environment);
|
| if (_processEnvironmentOverrides != null) {
|
| for (var key in _processEnvironmentOverrides.keys) {
|
| @@ -2642,6 +2685,10 @@ class CommandExecutorImpl implements CommandExecutor {
|
| adbDevicePool.releaseDevice(device);
|
| });
|
| });
|
| + } else if (command is VmBatchCommand) {
|
| + var name = command.displayName;
|
| + return _getBatchRunner(command.displayName + command.dartFile)
|
| + .runCommand(name, command, timeout, command.arguments);
|
| } else {
|
| return new RunningProcess(command, timeout).run();
|
| }
|
|
|