| Index: pkg/unittest/interactive_html_config.dart
|
| ===================================================================
|
| --- pkg/unittest/interactive_html_config.dart (revision 11963)
|
| +++ pkg/unittest/interactive_html_config.dart (working copy)
|
| @@ -5,8 +5,8 @@
|
| /**
|
| * This configuration can be used to rerun selected tests, as well
|
| * as see diagnostic output from tests. It runs each test in its own
|
| - * IFrame, so the configuration consists of two parts - a 'master'
|
| - * config that manages all the tests, and a 'slave' config for the
|
| + * IFrame, so the configuration consists of two parts - a 'parent'
|
| + * config that manages all the tests, and a 'child' config for the
|
| * IFrame that runs the individual tests.
|
| */
|
| #library('interactive_config');
|
| @@ -18,7 +18,7 @@
|
| #import('dart:math');
|
| #import('unittest.dart');
|
|
|
| -/** The messages exchanged between master and slave. */
|
| +/** The messages exchanged between parent and child. */
|
|
|
| class _Message {
|
| static const START = 'start';
|
| @@ -52,34 +52,34 @@
|
| }
|
|
|
| /**
|
| - * The slave configuration that is used to run individual tests in
|
| - * an IFrame and post the results back to the master. In principle
|
| + * The child configuration that is used to run individual tests in
|
| + * an IFrame and post the results back to the parent. In principle
|
| * this can run more than one test in the IFrame but currently only
|
| * one is used.
|
| */
|
| -class SlaveInteractiveHtmlConfiguration extends Configuration {
|
| +class ChildInteractiveHtmlConfiguration extends Configuration {
|
| // TODO(rnystrom): Get rid of this if we get canonical closures for methods.
|
| EventListener _onErrorClosure;
|
|
|
| /** The window to which results must be posted. */
|
| - Window masterWindow;
|
| + Window parentWindow;
|
|
|
| /** The time at which tests start. */
|
| Map<int,Date> _testStarts;
|
|
|
| - SlaveInteractiveHtmlConfiguration() :
|
| + ChildInteractiveHtmlConfiguration() :
|
| _testStarts = new Map<int,Date>();
|
|
|
| /** Don't start running tests automatically. */
|
| - get autoStart() => false;
|
| + get autoStart => false;
|
|
|
| void onInit() {
|
| _onErrorClosure =
|
| (e) => handleExternalError(e, '(DOM callback has errors)');
|
|
|
| /**
|
| - * The master posts a 'start' message to kick things off,
|
| - * which is handled by this handler. It saves the master
|
| + * The parent posts a 'start' message to kick things off,
|
| + * which is handled by this handler. It saves the parent
|
| * window, gets the test ID from the query parameter in the
|
| * IFrame URL, sets that as a solo test and starts test execution.
|
| */
|
| @@ -87,7 +87,7 @@
|
| // Get the result, do any logging, then do a pass/fail.
|
| var m = new _Message.fromString(e.data);
|
| if (m.messageType == _Message.START) {
|
| - masterWindow = e.source;
|
| + parentWindow = e.source;
|
| String search = window.location.search;
|
| int pos = search.indexOf('t=');
|
| String ids = search.substring(pos+2);
|
| @@ -110,11 +110,11 @@
|
| }
|
|
|
| /**
|
| - * Tests can call [log] for diagnostic output. These log
|
| + * Tests can call [logMessage] for diagnostic output. These log
|
| * messages in turn get passed to this method, which adds
|
| - * a timestamp and posts them back to the master window.
|
| + * a timestamp and posts them back to the parent window.
|
| */
|
| - void logMessage(TestCase testCase, String message) {
|
| + void logTestCaseMessage(TestCase testCase, String message) {
|
| int elapsed;
|
| if (testCase == null) {
|
| elapsed = -1;
|
| @@ -122,13 +122,13 @@
|
| Date end = new Date.now();
|
| elapsed = end.difference(_testStarts[testCase.id]).inMilliseconds;
|
| }
|
| - masterWindow.postMessage(
|
| + parentWindow.postMessage(
|
| _Message.text(_Message.LOG, elapsed, message).toString(), '*');
|
| }
|
|
|
| /**
|
| * Get the elapsed time for the test, anbd post the test result
|
| - * back to the master window. If the test failed due to an exception
|
| + * back to the parent window. If the test failed due to an exception
|
| * the stack is posted back too (before the test result).
|
| */
|
| void onTestResult(TestCase testCase) {
|
| @@ -136,10 +136,10 @@
|
| Date end = new Date.now();
|
| int elapsed = end.difference(_testStarts[testCase.id]).inMilliseconds;
|
| if (testCase.stackTrace != null) {
|
| - masterWindow.postMessage(
|
| + parentWindow.postMessage(
|
| _Message.text(_Message.STACK, elapsed, testCase.stackTrace), '*');
|
| }
|
| - masterWindow.postMessage(
|
| + parentWindow.postMessage(
|
| _Message.text(testCase.result, elapsed, testCase.message), '*');
|
| }
|
|
|
| @@ -150,15 +150,15 @@
|
| }
|
|
|
| /**
|
| - * The master configuration runs in the top-level window; it wraps the tests
|
| - * in new functions that create slave IFrames and run the real tests.
|
| + * The parent configuration runs in the top-level window; it wraps the tests
|
| + * in new functions that create child IFrames and run the real tests.
|
| */
|
| -class MasterInteractiveHtmlConfiguration extends Configuration {
|
| +class ParentInteractiveHtmlConfiguration extends Configuration {
|
| Map<int,Date> _testStarts;
|
| // TODO(rnystrom): Get rid of this if we get canonical closures for methods.
|
| EventListener _onErrorClosure;
|
|
|
| - /** The stack that was posted back from the slave, if any. */
|
| + /** The stack that was posted back from the child, if any. */
|
| String _stack;
|
|
|
| int _testTime;
|
| @@ -175,7 +175,7 @@
|
| */
|
| Function _messageHandler;
|
|
|
| - MasterInteractiveHtmlConfiguration() :
|
| + ParentInteractiveHtmlConfiguration() :
|
| _testStarts = new Map<int,Date>();
|
|
|
| // We need to block until the test is done, so we make a
|
| @@ -186,17 +186,17 @@
|
| String baseUrl = window.location.toString();
|
| String url = '${baseUrl}?t=${testCase.id}';
|
| return () {
|
| - // Rebuild the slave IFrame.
|
| - Element slaveDiv = document.query('#slave');
|
| - slaveDiv.nodes.clear();
|
| - IFrameElement slave = new Element.html("""
|
| - <iframe id='slaveFrame${testCase.id}' src='$url' style='display:none'>
|
| + // Rebuild the child IFrame.
|
| + Element childDiv = document.query('#child');
|
| + childDiv.nodes.clear();
|
| + IFrameElement child = new Element.html("""
|
| + <iframe id='childFrame${testCase.id}' src='$url' style='display:none'>
|
| </iframe>""");
|
| - slaveDiv.nodes.add(slave);
|
| + childDiv.nodes.add(child);
|
| completeTest = expectAsync0((){ });
|
| // Kick off the test when the IFrame is loaded.
|
| - slave.on.load.add((e) {
|
| - slave.contentWindow.postMessage(_Message.text(_Message.START), '*');
|
| + child.on.load.add((e) {
|
| + child.contentWindow.postMessage(_Message.text(_Message.START), '*');
|
| });
|
| };
|
| }
|
| @@ -205,12 +205,12 @@
|
| // Get the result, do any logging, then do a pass/fail.
|
| var msg = new _Message.fromString(e.data);
|
| if (msg.messageType == _Message.LOG) {
|
| - log(e.data);
|
| + logMessage(e.data);
|
| } else if (msg.messageType == _Message.STACK) {
|
| _stack = msg.body;
|
| } else {
|
| _testTime = msg.elapsed;
|
| - log(_Message.text(_Message.LOG, _testTime, 'Complete'));
|
| + logMessage(_Message.text(_Message.LOG, _testTime, 'Complete'));
|
| if (msg.messageType == _Message.PASS) {
|
| currentTestCase.pass();
|
| } else if (msg.messageType == _Message.FAIL) {
|
| @@ -286,7 +286,7 @@
|
| var state = cb.checked;
|
| var tests = parent.query('.tests');
|
| for (Element t in tests.elements) {
|
| - cb = t.query('.testselect');
|
| + cb = t.query('.testselect') as InputElement;
|
| cb.checked = state;
|
| var testId = parseInt(t.id.substring(_testIdPrefix.length));
|
| if (state) {
|
| @@ -344,10 +344,10 @@
|
| }
|
| }
|
|
|
| - // Actually test logging is handled by the slave, then posted
|
| - // back to the master. So here we know that the [message] argument
|
| + // Actually test logging is handled by the child, then posted
|
| + // back to the parent. So here we know that the [message] argument
|
| // is in the format used by [_Message].
|
| - void logMessage(TestCase testCase, String message) {
|
| + void logTestCaseMessage(TestCase testCase, String message) {
|
| var msg = new _Message.fromString(message);
|
| if (msg.elapsed < 0) { // No associated test case.
|
| document.query('#otherlogs').nodes.add(
|
| @@ -368,7 +368,8 @@
|
| if (!testCase.enabled) return;
|
| super.onTestResult(testCase);
|
| if (testCase.message != '') {
|
| - logMessage(testCase, _Message.text(_Message.LOG, -1, testCase.message));
|
| + logTestCaseMessage(testCase,
|
| + _Message.text(_Message.LOG, -1, testCase.message));
|
| }
|
| int id = testCase.id;
|
| var testItem = document.query('#$_testIdPrefix$id');
|
| @@ -404,7 +405,7 @@
|
| /**
|
| * Add the divs to the DOM if they are not present. We have a 'controls'
|
| * div for control, 'specs' div with test results, a 'busy' div for the
|
| - * animated GIF used to indicate tests are running, and a 'slave' div to
|
| + * animated GIF used to indicate tests are running, and a 'child' div to
|
| * hold the iframe for the test.
|
| */
|
| void _prepareDom() {
|
| @@ -438,21 +439,21 @@
|
| "<div id='busy' style='display:none'><img src='googleballs.gif'>"
|
| "</img></div>"));
|
| }
|
| - if (document.query('#slave') == null) {
|
| - document.body.nodes.add(new Element.html("<div id='slave'></div>"));
|
| + if (document.query('#child') == null) {
|
| + document.body.nodes.add(new Element.html("<div id='child'></div>"));
|
| }
|
| }
|
|
|
| /**
|
| - * Allocate a Configuration. We allocate either a master or
|
| - * slave, depedning on whether the URL has a search part.
|
| + * Allocate a Configuration. We allocate either a parent or
|
| + * child, depedning on whether the URL has a search part.
|
| */
|
| void useInteractiveHtmlConfiguration() {
|
| - if (window.location.search == '') { // This is the master.
|
| + if (window.location.search == '') { // This is the parent.
|
| _prepareDom();
|
| - configure(new MasterInteractiveHtmlConfiguration());
|
| + configure(new ParentInteractiveHtmlConfiguration());
|
| } else {
|
| - configure(new SlaveInteractiveHtmlConfiguration());
|
| + configure(new ChildInteractiveHtmlConfiguration());
|
| }
|
| }
|
|
|
|
|