| 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.
|
| + * @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;
|
|
|