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

Unified Diff: dart/pkg/unittest/test_controller.js

Issue 10918168: Run dart2js tests unmodified in drt. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge
Patch Set: Review comments Created 8 years, 3 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: dart/pkg/unittest/test_controller.js
diff --git a/dart/pkg/unittest/test_controller.js b/dart/pkg/unittest/test_controller.js
index ce7a8f0d469ee10bf7536939d94ac0f251a8dd78..5b2152103bf5aff2ecc26f92523f547632898e50 100644
--- a/dart/pkg/unittest/test_controller.js
+++ b/dart/pkg/unittest/test_controller.js
@@ -13,13 +13,26 @@ if (navigator.webkitStartDart) {
var testRunner = window.testRunner || window.layoutTestController;
+var waitForDone = false;
+
function processMessage(msg) {
- if (testRunner) {
- if (msg == 'unittest-suite-done') {
- testRunner.notifyDone();
- } else if (msg == 'unittest-suite-wait-for-done') {
- testRunner.startedDartTest = true;
+ if (typeof msg != 'string') return;
+ if (msg == 'unittest-suite-done') {
+ if (testRunner) testRunner.notifyDone();
+ } else if (msg == 'unittest-suite-wait-for-done') {
+ waitForDone = true;
+ if (testRunner) testRunner.startedDartTest = true;
+ } else if (msg == 'dart-calling-main') {
+ if (testRunner) testRunner.startedDartTest = true;
+ } else if (msg == 'dart-main-done') {
+ if (!waitForDone) {
+ window.postMessage('unittest-suite-success', '*');
}
+ } else if (msg == 'unittest-suite-success') {
+ document.body.innerHTML += '<pre>PASS</pre>';
+ if (testRunner) testRunner.notifyDone();
+ } else if (msg == 'unittest-suite-fail') {
+ showErrorAndExit('Some tests failed.');
}
}
@@ -59,7 +72,7 @@ window.addEventListener("error", function(e) {
showErrorAndExit(e && e.message);
}, false);
-document.onreadystatechange = function() {
+document.addEventListener('readystatechange', function () {
if (document.readyState != "loaded") return;
// If 'startedDartTest' is not set, that means that the test did not have
// a chance to load. This will happen when a load error occurs in the VM.
@@ -74,4 +87,28 @@ document.onreadystatechange = function() {
}
}, 0);
}, 50);
-};
+});
+
+// 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.
+function dartPrint(msg) {
+ if ((msg === 'unittest-suite-success')
+ || (msg === 'unittest-suite-wait-for-done')) {
+ window.postMessage(msg, '*');
+ return;
+ }
+ var pre = document.createElement("pre");
+ pre.appendChild(document.createTextNode(String(msg)));
+ document.body.appendChild(pre);
+}
+
+// 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', '*');
+ main();
+ window.postMessage('dart-main-done', '*');
+}

Powered by Google App Engine
This is Rietveld 408576698