| Index: tools/testing/dart/test_runner.dart
|
| diff --git a/tools/testing/dart/test_runner.dart b/tools/testing/dart/test_runner.dart
|
| index d081f62f51fe1d42d5bb65c87c93efa9877c28ad..d817a9e466ebba9b96855703dc2247b1be216a3e 100644
|
| --- a/tools/testing/dart/test_runner.dart
|
| +++ b/tools/testing/dart/test_runner.dart
|
| @@ -2255,55 +2255,80 @@ class ProcessQueue {
|
| this._listTests = false,
|
| String recordingOutputFile,
|
| String recordedInputFile]) {
|
| - bool recording = recordingOutputFile != null;
|
| - bool replaying = recordedInputFile != null;
|
| + void setupForListing(TestCaseEnqueuer testCaseEnqueuer) {
|
| + _graph.events.where((event) => event is dgraph.GraphSealedEvent)
|
| + .listen((dgraph.GraphSealedEvent event) {
|
| + var testCases = new List.from(testCaseEnqueuer.remainingTestCases);
|
| + testCases.sort((a, b) => a.displayName.compareTo(b.displayName));
|
|
|
| - // When the graph building is finished, notify event listeners.
|
| - _graph.events
|
| - .where((event) => event is dgraph.GraphSealedEvent).listen((event) {
|
| - eventAllTestsKnown();
|
| - });
|
| + print("\nGenerating all matching test cases ....\n");
|
| +
|
| + for (TestCase testCase in testCases) {
|
| + print("${testCase.displayName} "
|
| + "Expectations: ${testCase.expectedOutcomes.join(', ')} "
|
| + "Configuration: '${testCase.configurationString}'");
|
| + }
|
| + });
|
| + }
|
| +
|
| + void setupForRunning(TestCaseEnqueuer testCaseEnqueuer) {
|
| + bool recording = recordingOutputFile != null;
|
| + bool replaying = recordedInputFile != null;
|
| +
|
| + // When the graph building is finished, notify event listeners.
|
| + _graph.events
|
| + .where((event) => event is dgraph.GraphSealedEvent).listen((event) {
|
| + eventAllTestsKnown();
|
| + });
|
| +
|
| + // Queue commands as they become "runnable"
|
| + var commandEnqueuer = new CommandEnqueuer(_graph);
|
| +
|
| + // CommandExecutor will execute commands
|
| + var executor;
|
| + if (recording) {
|
| + executor = new RecordingCommandExecutor(new Path(recordingOutputFile));
|
| + } else if (replaying) {
|
| + executor = new ReplayingCommandExecutor(new Path(recordedInputFile));
|
| + } else {
|
| + executor = new CommandExecutorImpl(
|
| + _globalConfiguration, maxProcesses, maxBrowserProcesses);
|
| + }
|
| +
|
| + // Run "runnable commands" using [executor] subject to
|
| + // maxProcesses/maxBrowserProcesses constraint
|
| + var commandQueue = new CommandQueue(
|
| + _graph, testCaseEnqueuer, executor, maxProcesses, maxBrowserProcesses,
|
| + verbose);
|
| +
|
| + // Finish test cases when all commands were run (or some failed)
|
| + var testCaseCompleter =
|
| + new TestCaseCompleter(_graph, testCaseEnqueuer, commandQueue);
|
| + testCaseCompleter.finishedTestCases.listen(
|
| + (TestCase finishedTestCase) {
|
| + // If we're recording, we don't report any TestCases to listeners.
|
| + if (!recording) {
|
| + eventFinishedTestCase(finishedTestCase);
|
| + }
|
| + },
|
| + onDone: () {
|
| + // Wait until the commandQueue/execturo is done (it may need to stop
|
| + // batch runners, browser controllers, ....)
|
| + commandQueue.done.then((_) => eventAllTestsDone());
|
| + });
|
| + }
|
|
|
| // Build up the dependency graph
|
| var testCaseEnqueuer = new TestCaseEnqueuer(_graph, (TestCase newTestCase) {
|
| eventTestAdded(newTestCase);
|
| });
|
|
|
| - // Queue commands as they become "runnable"
|
| - var commandEnqueuer = new CommandEnqueuer(_graph);
|
| -
|
| - // CommandExecutor will execute commands
|
| - var executor;
|
| - if (recording) {
|
| - executor = new RecordingCommandExecutor(new Path(recordingOutputFile));
|
| - } else if (replaying) {
|
| - executor = new ReplayingCommandExecutor(new Path(recordedInputFile));
|
| + // Either list or run the tests
|
| + if (_globalConfiguration['list']) {
|
| + setupForListing(testCaseEnqueuer);
|
| } else {
|
| - executor = new CommandExecutorImpl(
|
| - _globalConfiguration, maxProcesses, maxBrowserProcesses);
|
| - }
|
| -
|
| - // Run "runnable commands" using [executor] subject to
|
| - // maxProcesses/maxBrowserProcesses constraint
|
| - var commandQueue = new CommandQueue(
|
| - _graph, testCaseEnqueuer, executor, maxProcesses, maxBrowserProcesses,
|
| - verbose);
|
| -
|
| - // Finish test cases when all commands were run (or some failed)
|
| - var testCaseCompleter =
|
| - new TestCaseCompleter(_graph, testCaseEnqueuer, commandQueue);
|
| - testCaseCompleter.finishedTestCases.listen(
|
| - (TestCase finishedTestCase) {
|
| - // If we're recording, we don't report any TestCases to listeners.
|
| - if (!recording) {
|
| - eventFinishedTestCase(finishedTestCase);
|
| - }
|
| - },
|
| - onDone: () {
|
| - // Wait until the commandQueue/execturo is done (it may need to stop
|
| - // batch runners, browser controllers, ....)
|
| - commandQueue.done.then((_) => eventAllTestsDone());
|
| - });
|
| + setupForRunning(testCaseEnqueuer);
|
| + }
|
|
|
| // Start enqueing all TestCases
|
| testCaseEnqueuer.enqueueTestSuites(testSuites);
|
|
|