| Index: pkg/unittest/lib/test_controller.js
|
| diff --git a/pkg/unittest/lib/test_controller.js b/pkg/unittest/lib/test_controller.js
|
| index 4862e03fa9f7130ccf2a1d9f838b23ac7fb0c3cd..af9398ef032c93bebb6a9b6e9caaaf158261634a 100644
|
| --- a/pkg/unittest/lib/test_controller.js
|
| +++ b/pkg/unittest/lib/test_controller.js
|
| @@ -67,7 +67,7 @@ function notifyDone() {
|
|
|
| // TODO(ricow): REMOVE, debug info, see issue 13292
|
| if (!testRunner) {
|
| - dartPrint('Calling notifyDone()');
|
| + printMessage('Calling notifyDone()');
|
| }
|
| // To support in browser launching of tests we post back start and result
|
| // messages to the window.opener.
|
| @@ -80,7 +80,7 @@ function notifyDone() {
|
| function processMessage(msg) {
|
| // TODO(ricow): REMOVE, debug info, see issue 13292
|
| if (!testRunner) {
|
| - dartPrint('processMessage(): ' + msg);
|
| + printMessage('processMessage(): ' + msg);
|
| }
|
| if (typeof msg != 'string') return;
|
| if (msg == 'unittest-suite-done') {
|
| @@ -95,7 +95,7 @@ function processMessage(msg) {
|
| window.postMessage('unittest-suite-success', '*');
|
| }
|
| } else if (msg == 'unittest-suite-success') {
|
| - dartPrint('PASS');
|
| + printMessage('PASS');
|
| notifyDone();
|
| } else if (msg == 'unittest-suite-fail') {
|
| showErrorAndExit('Some tests failed.');
|
| @@ -114,11 +114,11 @@ window.addEventListener("message", onReceive, false);
|
|
|
| function showErrorAndExit(message) {
|
| if (message) {
|
| - dartPrint('Error: ' + String(message));
|
| + printMessage('Error: ' + String(message));
|
| }
|
| // dart/tools/testing/run_selenium.py is looking for either PASS or
|
| // FAIL and will continue polling until one of these words show up.
|
| - dartPrint('FAIL');
|
| + printMessage('FAIL');
|
| notifyDone();
|
| }
|
|
|
| @@ -158,27 +158,50 @@ document.addEventListener('readystatechange', function () {
|
| });
|
|
|
| // dart2js will generate code to call this function to handle the Dart
|
| -// [print] method. The base [Configuration] (config.html) calls
|
| -// [print] with the secret messages "unittest-suite-success" and
|
| -// "unittest-suite-wait-for-done". These messages are then posted so
|
| -// processMessage above will see them.
|
| +// [print] method.
|
| +//
|
| +// dartium will invoke this method for [print] calls if the environment variable
|
| +// "DART_FORWARDING_PRINT" was set when launching dartium.
|
| +//
|
| +// Our tests will be wrapped, so we can detect when [main] is called and when
|
| +// it has ended.
|
| +// The wrapping happens either via "dartMainRunner" (for dart2js) or wrapped
|
| +// tests for dartium.
|
| +//
|
| +// The following messages are handled specially:
|
| +// dart-calling-main: signals that the dart [main] function will be invoked
|
| +// dart-main-done: signals that the dart [main] function has finished
|
| +// unittest-suite-wait-for-done: signals the start of an asynchronous test
|
| +// unittest-suite-success: signals the end of an asynchrounous test
|
| +//
|
| +// These messages are used to communicate with the test and will be posted so
|
| +// [processMessage] above can see it.
|
| function dartPrint(msg) {
|
| if ((msg === 'unittest-suite-success')
|
| || (msg === 'unittest-suite-done')
|
| - || (msg === 'unittest-suite-wait-for-done')) {
|
| + || (msg === 'unittest-suite-wait-for-done')
|
| + || (msg === 'dart-calling-main')
|
| + || (msg === 'dart-main-done')) {
|
| window.postMessage(msg, '*');
|
| return;
|
| }
|
| + printMessage(msg);
|
| +}
|
| +
|
| +// Prints 'msg' to the console (if available) and to the body of the html
|
| +// document.
|
| +function printMessage(msg) {
|
| if (typeof console === 'object') console.warn(msg);
|
| - var pre = document.createElement("pre");
|
| + var pre = document.createElement('pre');
|
| pre.appendChild(document.createTextNode(String(msg)));
|
| document.body.appendChild(pre);
|
| + document.body.appendChild(document.createTextNode('\n'));
|
| }
|
|
|
| // dart2js will generate code to call this function instead of calling
|
| // Dart [main] directly. The argument is a closure that invokes main.
|
| function dartMainRunner(main) {
|
| - window.postMessage('dart-calling-main', '*');
|
| + dartPrint('dart-calling-main');
|
| try {
|
| main();
|
| } catch (e) {
|
| @@ -187,5 +210,5 @@ function dartMainRunner(main) {
|
| window.postMessage('unittest-suite-fail', '*');
|
| return;
|
| }
|
| - window.postMessage('dart-main-done', '*');
|
| + dartPrint('dart-main-done');
|
| }
|
|
|