| Index: tools/testing/dart/runtime_configuration.dart
|
| diff --git a/tools/testing/dart/runtime_configuration.dart b/tools/testing/dart/runtime_configuration.dart
|
| index 33b83e982e3369914da23cb4229c133c42975b3c..d3747eac06b1479d34cd6ec5755b591e7f39ecac 100644
|
| --- a/tools/testing/dart/runtime_configuration.dart
|
| +++ b/tools/testing/dart/runtime_configuration.dart
|
| @@ -4,14 +4,22 @@
|
|
|
| library runtime_configuration;
|
|
|
| +import 'dart:io' show Directory, File;
|
| +
|
| import 'compiler_configuration.dart' show CommandArtifact;
|
|
|
| // TODO(ahe): Remove this import, we can precompute all the values required
|
| // from TestSuite once the refactoring is complete.
|
| -import 'test_suite.dart' show TestSuite;
|
| +import 'test_suite.dart' show TestSuite, TestUtils;
|
|
|
| import 'test_runner.dart' show Command, CommandBuilder;
|
|
|
| +/// Describes the commands to run a given test case or its compiled output.
|
| +///
|
| +/// A single runtime configuration object exists per test suite, and is thus
|
| +/// shared between multiple test cases, it should not be mutated after
|
| +/// construction.
|
| +//
|
| // TODO(ahe): I expect this class will become abstract very soon.
|
| class RuntimeConfiguration {
|
| // TODO(ahe): Remove this constructor and move the switch to
|
| @@ -59,6 +67,9 @@ class RuntimeConfiguration {
|
| case 'drt':
|
| return new DrtRuntimeConfiguration();
|
|
|
| + case 'self_check':
|
| + return new SelfCheckRuntimeConfiguration();
|
| +
|
| default:
|
| throw "Unknown runtime '$runtime'";
|
| }
|
| @@ -82,6 +93,8 @@ class RuntimeConfiguration {
|
| }
|
|
|
| List<String> dart2jsPreambles(Uri preambleDir) => [];
|
| +
|
| + bool get shouldSkipNegativeTests => false;
|
| }
|
|
|
| /// The 'none' runtime configuration.
|
| @@ -287,6 +300,40 @@ class DartPrecompiledAdbRuntimeConfiguration
|
| }
|
| }
|
|
|
| +class SelfCheckRuntimeConfiguration extends DartVmRuntimeConfiguration {
|
| + final List<String> selfCheckers = <String>[];
|
| +
|
| + SelfCheckRuntimeConfiguration() {
|
| + searchForSelfCheckers();
|
| + }
|
| +
|
| + void searchForSelfCheckers() {
|
| + Uri pkg = TestUtils.dartDirUri.resolve('pkg');
|
| + for (var entry in new Directory.fromUri(pkg).listSync(recursive: true)) {
|
| + if (entry is File && entry.path.endsWith('_self_check.dart')) {
|
| + selfCheckers.add(entry.path);
|
| + }
|
| + }
|
| + }
|
| +
|
| + List<Command> computeRuntimeCommands(
|
| + TestSuite suite,
|
| + CommandBuilder commandBuilder,
|
| + CommandArtifact artifact,
|
| + List<String> arguments,
|
| + Map<String, String> environmentOverrides) {
|
| + String executable = suite.dartVmBinaryFileName;
|
| + return selfCheckers
|
| + .map((String tester) => commandBuilder.getVmBatchCommand(
|
| + executable, tester, arguments, environmentOverrides,
|
| + checked: suite.configuration['checked']))
|
| + .toList();
|
| + }
|
| +
|
| + @override
|
| + bool get shouldSkipNegativeTests => true;
|
| +}
|
| +
|
| /// Temporary runtime configuration for browser runtimes that haven't been
|
| /// migrated yet.
|
| // TODO(ahe): Remove this class.
|
|
|