| Index: chrome/test/data/extensions/api_test/override1/api_test.js
|
| diff --git a/chrome/test/data/extensions/api_test/override1/api_test.js b/chrome/test/data/extensions/api_test/override1/api_test.js
|
| new file mode 100755
|
| index 0000000000000000000000000000000000000000..84d0bb129bec7e85597a88d63594b1fe8bea7b00
|
| --- /dev/null
|
| +++ b/chrome/test/data/extensions/api_test/override1/api_test.js
|
| @@ -0,0 +1,107 @@
|
| +// api_test.js
|
| +// mini-framework for ExtensionApiTest browser tests
|
| +// TODO(erikkay) - figure out a way to share this code across extensions
|
| +
|
| +var completed = false;
|
| +var tests;
|
| +var currentTest;
|
| +
|
| +function complete() {
|
| + completed = true;
|
| +
|
| + // a bit of a hack just to try to get the script to stop running at this point
|
| + throw "completed";
|
| +}
|
| +
|
| +function fail(message) {
|
| + if (completed) throw "completed";
|
| +
|
| + var stack;
|
| + try {
|
| + crash.me += 0; // intentional exception to get the stack trace
|
| + } catch (e) {
|
| + stack = e.stack.split("\n");
|
| + stack = stack.slice(2); // remove title and fail()
|
| + stack = stack.join("\n");
|
| + }
|
| +
|
| + if (!message) {
|
| + message = "FAIL (no message)";
|
| + }
|
| + message += "\n" + stack;
|
| + console.log("[FAIL] " + currentTest.name + ": " + message);
|
| + chrome.test.fail(message);
|
| + complete();
|
| +}
|
| +
|
| +function allTestsSucceeded() {
|
| + console.log("All tests succeeded");
|
| + if (completed) throw "completed";
|
| +
|
| + chrome.test.pass();
|
| + complete();
|
| +}
|
| +
|
| +function runNextTest() {
|
| + currentTest = tests.shift();
|
| + if (!currentTest) {
|
| + allTestsSucceeded();
|
| + return;
|
| + }
|
| + currentTest.call();
|
| +}
|
| +
|
| +function succeed() {
|
| + console.log("[SUCCESS] " + currentTest.name);
|
| + runNextTest();
|
| +}
|
| +
|
| +window.onerror = function(message, url, code) {
|
| + if (completed) return;
|
| +
|
| + fail(message);
|
| +};
|
| +
|
| +function assertTrue(test, message) {
|
| + if (test !== true) {
|
| + if (typeof(test) == "string") {
|
| + if (message) {
|
| + message = test + "\n" + message;
|
| + } else {
|
| + message = test;
|
| + }
|
| + }
|
| + fail(message);
|
| + }
|
| +}
|
| +
|
| +function assertNoLastError() {
|
| + if (chrome.extension.lastError != undefined) {
|
| + fail("lastError.message == " + chrome.extension.lastError.message);
|
| + }
|
| +}
|
| +
|
| +// Wrapper for generating test functions, that takes care of calling
|
| +// assertNoLastError() and succeed() for you.
|
| +function testFunction(func) {
|
| + return function() {
|
| + assertNoLastError();
|
| + try {
|
| + func.apply(null, arguments);
|
| + } catch (e) {
|
| + var stack = null;
|
| + if (typeof(e.stack) != "undefined") {
|
| + stack = e.stack.toString()
|
| + }
|
| + var msg = "Exception during execution of testFunction in " +
|
| + currentTest.name;
|
| + if (stack) {
|
| + msg += "\n" + stack;
|
| + } else {
|
| + msg += "\n(no stack available)";
|
| + }
|
| + fail(msg);
|
| + }
|
| + succeed();
|
| + };
|
| +}
|
|
|