| Index: webkit/glue/devtools/js/tests.js
|
| ===================================================================
|
| --- webkit/glue/devtools/js/tests.js (revision 20023)
|
| +++ webkit/glue/devtools/js/tests.js (working copy)
|
| @@ -18,6 +18,8 @@
|
| * @constructor
|
| */
|
| TestSuite = function() {
|
| + this.controlTaken_ = false;
|
| + this.timerId_ = -1;
|
| };
|
|
|
|
|
| @@ -26,7 +28,11 @@
|
| * @param {string} message Failure description.
|
| */
|
| TestSuite.prototype.fail = function(message) {
|
| - throw message;
|
| + if (this.controlTaken_) {
|
| + this.reportFailure_(message);
|
| + } else {
|
| + throw message;
|
| + }
|
| };
|
|
|
|
|
| @@ -65,33 +71,9 @@
|
|
|
|
|
| /**
|
| - * Runs all global functions starting with 'test' as unit tests.
|
| - */
|
| -TestSuite.prototype.runAllTests = function() {
|
| - // For debugging purposes.
|
| - for (var name in this) {
|
| - if (name.substring(0, 4) == 'test' &&
|
| - typeof this[name] == 'function') {
|
| - this.runTest(name);
|
| - }
|
| - }
|
| -};
|
| -
|
| -
|
| -/**
|
| - * Manual controller for async tests.
|
| - * @constructor.
|
| - */
|
| -TestSuite.Controller = function() {
|
| - this.controlTaken_ = false;
|
| - this.timerId_ = -1;
|
| -};
|
| -
|
| -
|
| -/**
|
| * Takes control over execution.
|
| */
|
| -TestSuite.Controller.prototype.takeControl = function() {
|
| +TestSuite.prototype.takeControl = function() {
|
| this.controlTaken_ = true;
|
| // Set up guard timer.
|
| var self = this;
|
| @@ -104,11 +86,10 @@
|
| /**
|
| * Releases control over execution.
|
| */
|
| -TestSuite.Controller.prototype.releaseControl = function() {
|
| - this.controlTaken_ = false;
|
| +TestSuite.prototype.releaseControl = function() {
|
| if (this.timerId_ != -1) {
|
| + clearTimeout(this.timerId_);
|
| this.timerId_ = -1;
|
| - clearTimeout(this.timerId_);
|
| }
|
| this.reportOk_();
|
| };
|
| @@ -117,7 +98,7 @@
|
| /**
|
| * Async tests use this one to report that they are completed.
|
| */
|
| -TestSuite.Controller.prototype.reportOk_ = function() {
|
| +TestSuite.prototype.reportOk_ = function() {
|
| window.domAutomationController.send('[OK]');
|
| };
|
|
|
| @@ -125,10 +106,10 @@
|
| /**
|
| * Async tests use this one to report failures.
|
| */
|
| -TestSuite.Controller.prototype.reportFailure_ = function(error) {
|
| +TestSuite.prototype.reportFailure_ = function(error) {
|
| if (this.timerId_ != -1) {
|
| + clearTimeout(this.timerId_);
|
| this.timerId_ = -1;
|
| - clearTimeout(this.timerId_);
|
| }
|
| window.domAutomationController.send('[FAILED] ' + error);
|
| };
|
| @@ -138,14 +119,13 @@
|
| * Runs all global functions starting with 'test' as unit tests.
|
| */
|
| TestSuite.prototype.runTest = function(testName) {
|
| - var controller = new TestSuite.Controller();
|
| try {
|
| - this[testName](controller);
|
| - if (!controller.controlTaken_) {
|
| - controller.reportOk_();
|
| + this[testName]();
|
| + if (!this.controlTaken_) {
|
| + this.reportOk_();
|
| }
|
| } catch (e) {
|
| - controller.reportFailure_(e);
|
| + this.reportFailure_(e);
|
| }
|
| };
|
|
|
| @@ -204,7 +184,7 @@
|
| /**
|
| * Tests that resources tab is enabled when corresponding item is selected.
|
| */
|
| -TestSuite.prototype.testEnableResourcesTab = function(controller) {
|
| +TestSuite.prototype.testEnableResourcesTab = function() {
|
| this.showPanel('resources');
|
|
|
| var test = this;
|
| @@ -216,7 +196,7 @@
|
| WebInspector.panels.resources.refresh();
|
| WebInspector.resources[identifier]._resourcesTreeElement.select();
|
|
|
| - controller.releaseControl();
|
| + test.releaseControl();
|
| };
|
|
|
| // Following call should lead to reload that we capture in the
|
| @@ -224,14 +204,14 @@
|
| WebInspector.panels.resources._enableResourceTracking();
|
|
|
| // We now have some time to report results to controller.
|
| - controller.takeControl();
|
| + this.takeControl();
|
| };
|
|
|
|
|
| /**
|
| * Tests resource headers.
|
| */
|
| -TestSuite.prototype.testResourceHeaders = function(controller) {
|
| +TestSuite.prototype.testResourceHeaders = function() {
|
| this.showPanel('resources');
|
|
|
| var test = this;
|
| @@ -281,19 +261,19 @@
|
| test.assertTrue(responseOk);
|
| test.assertTrue(timingOk);
|
| test.assertTrue(typeof resource.endTime != 'undefnied');
|
| - controller.releaseControl();
|
| + test.releaseControl();
|
| }
|
| };
|
|
|
| WebInspector.panels.resources._enableResourceTracking();
|
| - controller.takeControl();
|
| + this.takeControl();
|
| };
|
|
|
|
|
| /**
|
| * Test that profiler works.
|
| */
|
| -TestSuite.prototype.testProfilerTab = function(controller) {
|
| +TestSuite.prototype.testProfilerTab = function() {
|
| this.showPanel('profiles');
|
|
|
| var test = this;
|
| @@ -310,7 +290,7 @@
|
| // that we actually have profiled page's code.
|
| while (node) {
|
| if (node.functionName.indexOf("fib") != -1) {
|
| - controller.releaseControl();
|
| + test.releaseControl();
|
| }
|
| node = node.traverseNextNode(true, null, true);
|
| }
|
| @@ -320,14 +300,14 @@
|
|
|
| InspectorController.startProfiling();
|
| window.setTimeout('InspectorController.stopProfiling();', 1000);
|
| - controller.takeControl();
|
| + this.takeControl();
|
| };
|
|
|
|
|
| /**
|
| * Tests that scripts tab can be open and populated with inspected scripts.
|
| */
|
| -TestSuite.prototype.testShowScriptsTab = function(controller) {
|
| +TestSuite.prototype.testShowScriptsTab = function() {
|
| var parsedDebuggerTestPageHtml = false;
|
| var parsedDebuggerTestJs = false;
|
|
|
| @@ -357,14 +337,14 @@
|
| }
|
|
|
| if (parsedDebuggerTestJs && parsedDebuggerTestPageHtml) {
|
| - controller.releaseControl();
|
| + test.releaseControl();
|
| }
|
| };
|
|
|
| this.showPanel('scripts');
|
|
|
| // Wait until all scripts are added to the debugger.
|
| - controller.takeControl();
|
| + this.takeControl();
|
| };
|
|
|
|
|
| @@ -381,7 +361,7 @@
|
| /**
|
| * Tests console eval.
|
| */
|
| -TestSuite.prototype.testConsoleEval = function(controller) {
|
| +TestSuite.prototype.testConsoleEval = function() {
|
| WebInspector.console.visible = true;
|
| WebInspector.console.prompt.text = '123';
|
| WebInspector.console.promptElement.handleKeyEvent(
|
| @@ -393,17 +373,17 @@
|
| originalConsoleAddMessage.call(this, commandResult);
|
| WebInspector.Console.prototype.addMessage = originalConsoleAddMessage;
|
| test.assertEquals('123', commandResult.toMessageElement().textContent);
|
| - controller.releaseControl();
|
| + test.releaseControl();
|
| };
|
|
|
| - controller.takeControl();
|
| + this.takeControl();
|
| };
|
|
|
|
|
| /**
|
| * Tests console log.
|
| */
|
| -TestSuite.prototype.testConsoleLog = function(controller) {
|
| +TestSuite.prototype.testConsoleLog = function() {
|
| WebInspector.console.visible = true;
|
| var messages = WebInspector.console.messages;
|
| var index = 0;
|
| @@ -444,7 +424,7 @@
|
| /**
|
| * Tests eval of global objects.
|
| */
|
| -TestSuite.prototype.testEvalGlobal = function(controller) {
|
| +TestSuite.prototype.testEvalGlobal = function() {
|
| WebInspector.console.visible = true;
|
| WebInspector.console.prompt.text = 'foo';
|
| WebInspector.console.promptElement.handleKeyEvent(
|
| @@ -455,19 +435,47 @@
|
| WebInspector.Console.prototype.addMessage = function(commandResult) {
|
| originalConsoleAddMessage.call(this, commandResult);
|
| test.assertEquals('fooValue', commandResult.toMessageElement().textContent);
|
| - controller.releaseControl();
|
| + test.releaseControl();
|
| };
|
|
|
| - controller.takeControl();
|
| + this.takeControl();
|
| };
|
|
|
|
|
| /**
|
| * Tests eval on call frame.
|
| */
|
| -TestSuite.prototype.testEvalCallFrame = function(controller) {
|
| +TestSuite.prototype.testEvalCallFrame = function() {
|
| };
|
|
|
|
|
| -var uiTests = new TestSuite();
|
| +/**
|
| + * Test runner for the test suite.
|
| + */
|
| +var uiTests = {};
|
| +
|
| +
|
| +/**
|
| + * Run each test from the test suit on a fresh instance of the suite.
|
| + */
|
| +uiTests.runAllTests = function() {
|
| + // For debugging purposes.
|
| + for (var name in TestSuite.prototype) {
|
| + if (name.substring(0, 4) == 'test' &&
|
| + typeof TestSuite.prototype[name] == 'function') {
|
| + uiTests.runTest(name);
|
| + }
|
| + }
|
| +};
|
| +
|
| +
|
| +/**
|
| + * Run specified test on a fresh instance of the test suite.
|
| + * @param {string} name Name of a test method from TestSuite class.
|
| + */
|
| +uiTests.runTest = function(name) {
|
| + new TestSuite().runTest(name);
|
| +};
|
| +
|
| +
|
| }
|
|
|