Index: pkg/unittest/lib/src/config.dart |
diff --git a/pkg/unittest/lib/src/config.dart b/pkg/unittest/lib/src/config.dart |
index e01d9335a679b773aa6bb15841da916fef4dbf07..9d482aedb7b3f7f3a5fec317b04fe9e20028fb93 100644 |
--- a/pkg/unittest/lib/src/config.dart |
+++ b/pkg/unittest/lib/src/config.dart |
@@ -38,7 +38,7 @@ class Configuration { |
*/ |
void onInit() { |
_receivePort = new ReceivePort(); |
- _postMessage('unittest-suite-wait-for-done'); |
+ notifyController('unittest-suite-wait-for-done'); |
} |
/** Called as soon as the unittest framework starts running. */ |
@@ -94,7 +94,7 @@ class Configuration { |
* When [uncaughtError] is not null, it contains an error that occured outside |
* of tests (e.g. setting up the test). |
*/ |
- void onDone(int passed, int failed, int errors, List<TestCase> results, |
+ void onSummary(int passed, int failed, int errors, List<TestCase> results, |
String uncaughtError) { |
// Print each test's result. |
for (final t in _tests) { |
@@ -126,12 +126,18 @@ class Configuration { |
} |
print('$passed PASSED, $failed FAILED, $errors ERRORS'); |
} |
+ } |
+ /** |
+ * Called when the unittest framework is done running. [success] indicates |
+ * whether all tests passed successfully. |
+ */ |
+ void onDone(bool success) { |
if (success) { |
- _postMessage('unittest-suite-success'); |
- _receivePort.close(); |
+ notifyController('unittest-suite-success'); |
+ _receivePort.close(); |
} else { |
- _receivePort.close(); |
+ _receivePort.close(); |
throw new Exception('Some tests failed.'); |
} |
} |
@@ -149,7 +155,18 @@ class Configuration { |
handleExternalError(e, String message) => |
_reportTestError('$message\nCaught $e', ''); |
- _postMessage(String message) { |
+ /** |
+ * Send messages to the test controller code (see 'test_controller.js'). This |
+ * is only needed to support browser tests with dart2js. Note: we could wrap |
+ * tests and send the appropriate messages to the controller through the |
+ * wrapper, but using wrappers has a noticeable overhead in the testing bots, |
+ * so we use this approach instead. |
+ * |
+ * Configurations that will not run in DRT (such as vm_config and |
+ * compact_vm_config), can safely override this method to avoid printing extra |
+ * mesages in the console. |
+ */ |
+ void notifyController(String message) { |
// In dart2js browser tests, the JavaScript-based test controller |
// intercepts calls to print and listens for "secret" messages. |
print(message); |