Chromium Code Reviews| Index: chrome/test/data/webui/test_api.js |
| diff --git a/chrome/test/data/webui/test_api.js b/chrome/test/data/webui/test_api.js |
| index 72de125013fd6830d488d5c1cb467aa5f679dd07..4c1b4b1a7069068c0eb7a283f8b9c95f68b7eace 100644 |
| --- a/chrome/test/data/webui/test_api.js |
| +++ b/chrome/test/data/webui/test_api.js |
| @@ -18,6 +18,17 @@ var testing = {}; |
| **/ |
| var currentTestCase = null; |
| +/** |
| + * @type {?string} The string representation of the currently running test |
| + * function. |
| + */ |
| +var currentTestFunction = null; |
| + |
| +/** |
| + * @type {?Array} The arguments of the currently running test. |
| + */ |
| +var currentTestArguments = null; |
| + |
| (function() { |
| // Provide global objects for generation case. |
| if (this['window'] === undefined) |
| @@ -309,6 +320,49 @@ var currentTestCase = null; |
| **/ |
| var helper = new CallHelper(); |
| + /** |
| + * true when asyncTestDone has been called. |
| + * @type {boolean} |
| + */ |
| + var asyncTestIsDone = false; |
| + |
| + /** |
| + * Holds the errors, if any, caught by expects so that the test case can fail. |
|
mmenke
2011/08/08 16:38:25
nit: Add "Cleared when errors are reported to the
Sheridan Rawlins
2011/08/10 01:58:53
Done.
|
| + * @type {Array.<Error>} |
| + **/ |
| + var errors = []; |
| + |
| + /** |
| + * Notifies the running browser test that any async javascript is complete. |
| + * @param {Array.<boolean, string>=} result When passed, this is used for the |
| + * asyncTestResult message. |
| + **/ |
| + function asyncTestDone(result) { |
| + if (!asyncTestIsDone) { |
| + asyncTestIsDone = true; |
| + chrome.send('asyncTestResult', result ? result : testResult()); |
| + errors.splice(0, errors.length); |
| + } |
| + } |
| + |
| + /** |
| + * Returns [success, message] & clears |errors|. |
| + * @return {Array.<boolean, string>} |
| + **/ |
| + function testResult() { |
| + var result = [true, '']; |
| + if (errors.length) { |
| + var message = ''; |
| + for (var i = 0; i < errors.length; ++i) { |
| + message += 'Failed: ' + currentTestFunction + '(' + |
| + currentTestArguments.map(JSON.stringify) + |
| + ')\n' + errors[i].stack; |
| + } |
| + result = [false, message]; |
| + } |
| + return result; |
| + } |
| + |
| // Asserts. |
| // Use the following assertions to verify a condition within a test. |
| // If assertion fails, the C++ backend will be immediately notified. |
| @@ -445,12 +499,6 @@ var currentTestCase = null; |
| } |
| /** |
| - * Holds the errors, if any, caught by expects so that the test case can fail. |
| - * @type {Array.<Error>} |
| - **/ |
| - var errors = []; |
| - |
| - /** |
| * Creates a function based upon a function that thows an exception on |
| * failure. The new function stuffs any errors into the |errors| array for |
| * checking by runTest. This allows tests to continue running other checks, |
| @@ -487,14 +535,17 @@ var currentTestCase = null; |
| // Avoid eval() if at all possible, since it will not work on pages |
| // that have enabled content-security-policy. |
| var testBody = this[testFunction]; // global object -- not a method. |
| - if (typeof testBody === "undefined") |
| + var testName = testFunction; |
| + if (typeof testBody === "undefined") { |
| testBody = eval(testFunction); |
| + testName = testBody.toString(); |
| + } |
| if (testBody != RUN_TEST_F) { |
| - var testName = |
| - testFunction.name ? testFunction.name : testBody.toString(); |
| console.log('Running test ' + testName); |
| } |
| - return runTestFunction(testFunction, testBody, testArguments); |
| + var result = runTestFunction(testFunction, testBody, testArguments); |
| + errors.splice(0, errors.length); |
| + return result; |
| } |
| /** |
| @@ -511,21 +562,10 @@ var currentTestCase = null; |
| * @see createExpect |
| **/ |
| function runTestFunction(testFunction, testBody, testArguments) { |
| - errors.splice(0, errors.length); |
| + currentTestFunction = testFunction; |
| + currentTestArguments = testArguments; |
| createExpect(testBody).apply(null, testArguments); |
| - |
| - var result = [true]; |
| - if (errors.length) { |
| - var message = ''; |
| - for (var i = 0; i < errors.length; ++i) { |
| - message += 'Failed: ' + testFunction + '(' + |
| - testArguments.map(JSON.stringify) + |
| - ')\n' + errors[i].stack; |
| - } |
| - errors.splice(0, errors.length); |
| - result = [false, message]; |
| - } |
| - return result; |
| + return testResult(); |
| } |
| /** |
| @@ -710,6 +750,7 @@ var currentTestCase = null; |
| // Exports. |
| testing.Test = Test; |
| + window.asyncTestDone = asyncTestDone; |
| window.assertTrue = assertTrue; |
| window.assertFalse = assertFalse; |
| window.assertGE = assertGE; |