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

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

Issue 11035027: Add in-process http server to the dart test scripts. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Address more comments. Created 8 years, 2 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
Index: tools/testing/dart/test_runner.dart
diff --git a/tools/testing/dart/test_runner.dart b/tools/testing/dart/test_runner.dart
index caa9ee102d6861834d0f0849c0dc101ac7be734e..b2dcd027e9fca07149d77cf77144fef41869cf62 100644
--- a/tools/testing/dart/test_runner.dart
+++ b/tools/testing/dart/test_runner.dart
@@ -22,7 +22,7 @@ const int SLOW_TIMEOUT_MULTIPLIER = 4;
typedef void TestCaseEvent(TestCase testCase);
typedef void ExitCodeEvent(int exitCode);
-typedef bool EnqueMoreWork(ProcessQueue queue);
+typedef bool EnqueueMoreWork(ProcessQueue queue);
/** A command executed as a step in a test case. */
class Command {
@@ -953,7 +953,8 @@ class ProcessQueue {
int _MAX_FAILED_NO_RETRY = 4;
bool _verbose;
bool _listTests;
- EnqueMoreWork _enqueueMoreWork;
+ Function _allDone;
+ EnqueueMoreWork _enqueueMoreWork;
Queue<TestCase> _tests;
ProgressIndicator _progress;
@@ -988,6 +989,7 @@ class ProcessQueue {
Date startTime,
bool printTiming,
this._enqueueMoreWork,
+ this._allDone,
[bool verbose = false,
bool listTests = false])
: _verbose = verbose,
@@ -998,7 +1000,7 @@ class ProcessQueue {
printTiming),
_batchProcesses = new Map<String, List<BatchRunnerProcess>>(),
_testCache = new Map<String, List<TestInformation>>() {
- if (!_enqueueMoreWork(this)) _progress.allDone();
+ _checkDone();
}
/**
@@ -1019,8 +1021,11 @@ class ProcessQueue {
* and notify our progress indicator that we are done.
*/
void _cleanupAndMarkDone() {
+ // _progress.allDone() exits the process, so we have to call the
+ // _allDone callback before.
+ _allDone();
if (browserUsed != '' && _seleniumServer != null) {
- _seleniumServer.kill();
+ _seleniumServer.kill();
} else {
_progress.allDone();
}
@@ -1029,7 +1034,11 @@ class ProcessQueue {
void _checkDone() {
// When there are no more active test listers ask for more work
// from process queue users.
- if (_activeTestListers == 0 && !_enqueueMoreWork(this)) {
+ if (_activeTestListers == 0) {
+ _enqueueMoreWork(this);
+ }
+ // If there is still no work, we are done.
+ if (_activeTestListers == 0) {
_progress.allTestsKnown();
if (_tests.isEmpty() && _numProcesses == 0) {
_terminateBatchRunners();

Powered by Google App Engine
This is Rietveld 408576698