Issue #439 - Remove tests from toolkit/

This commit is contained in:
Matt A. Tobin 2020-02-25 15:07:00 -05:00 • committed by Roy Tam
commit e5bacc6f6e
2362 changed files with 95 additions and 246993 deletions

View file

@ -4,11 +4,4 @@
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
MOCHITEST_CHROME_MANIFESTS += ['tests/chrome.ini']
EXTRA_JS_MODULES.workers += [
'require.js'
]
with Files('**'):
BUG_COMPONENT = ('Toolkit', 'Async Tooling')
EXTRA_JS_MODULES.workers += ['require.js']

View file

@ -1,7 +0,0 @@
"use strict";
module.exports = {
"extends": [
"../../../../testing/mochitest/chrome.eslintrc.js"
]
};

View file

@ -1,15 +0,0 @@
[DEFAULT]
support-files =
moduleA-depends.js
moduleB-dependency.js
moduleC-circular.js
moduleD-circular.js
moduleE-throws-during-require.js
moduleF-syntax-error.js
moduleG-throws-later.js
moduleH-module-dot-exports.js
utils_mainthread.js
utils_worker.js
worker_test_loading.js
[test_loading.xul]

View file

@ -1,14 +0,0 @@
/* Any copyright is dedicated to the Public Domain.
http://creativecommons.org/publicdomain/zero/1.0/ */
// A trivial module that depends on an equally trivial module
var B = require("chrome://mochitests/content/chrome/toolkit/components/workerloader/tests/moduleB-dependency.js");
// Ensure that the initial set of exports is empty
if (Object.keys(exports).length) {
throw new Error("exports should be empty, initially");
}
// Export some values
exports.A = true;
exports.importedFoo = B.foo;

View file

@ -1,11 +0,0 @@
/* Any copyright is dedicated to the Public Domain.
* http://creativecommons.org/publicdomain/zero/1.0/ */
exports.B = true;
exports.foo = "foo";
// Side-effect to detect if we attempt to re-execute this module.
if ("loadedB" in self) {
throw new Error("B has been evaluted twice");
}
self.loadedB = true;

View file

@ -1,18 +0,0 @@
/* Any copyright is dedicated to the Public Domain.
* http://creativecommons.org/publicdomain/zero/1.0/ */
// Module C and module D have circular dependencies.
// This should not prevent from loading them.
// This value is set before any circular dependency, it should be visible
// in D.
exports.enteredC = true;
var D = require("chrome://mochitests/content/chrome/toolkit/components/workerloader/tests/moduleD-circular.js");
// The following values are set after importing D.
// copiedFromD.copiedFromC should have only one field |enteredC|
exports.copiedFromD = JSON.parse(JSON.stringify(D));
// exportedFromD.copiedFromC should have all the fields defined in |exports|
exports.exportedFromD = D;
exports.finishedC = true;

View file

@ -1,11 +0,0 @@
/* Any copyright is dedicated to the Public Domain.
* http://creativecommons.org/publicdomain/zero/1.0/ */
// Module C and module D have circular dependencies.
// This should not prevent from loading them.
exports.enteredD = true;
var C = require("chrome://mochitests/content/chrome/toolkit/components/workerloader/tests/moduleC-circular.js");
exports.copiedFromC = JSON.parse(JSON.stringify(C));
exports.exportedFromC = C;
exports.finishedD = true;

View file

@ -1,10 +0,0 @@
/* Any copyright is dedicated to the Public Domain.
* http://creativecommons.org/publicdomain/zero/1.0/ */
// Skip a few lines
// 5
// 6
// 7
// 8
// 9
throw new Error("Let's see if this error is obtained with the right origin");

View file

@ -1,6 +0,0 @@
<!--
Any copyright is dedicated to the Public Domain.
http://creativecommons.org/publicdomain/zero/1.0/
-->
<?xml version="1.0" encoding="UTF-8" ?>
<foo>Anything that doesn't parse as JavaScript</foo>

View file

@ -1,12 +0,0 @@
/* Any copyright is dedicated to the Public Domain.
* http://creativecommons.org/publicdomain/zero/1.0/ */
// Skip a few lines
// 5
// 6
// 7
// 8
// 9
exports.doThrow = function doThrow() {
Array.prototype.sort.apply("foo"); // This will raise a native TypeError
};

View file

@ -1,12 +0,0 @@
/* Any copyright is dedicated to the Public Domain.
* http://creativecommons.org/publicdomain/zero/1.0/ */
// This should be overwritten by module.exports
exports.key = "wrong value";
module.exports = {
key: "value"
};
// This should also be overwritten by module.exports
exports.key = "another wrong value";

View file

@ -1,41 +0,0 @@
<?xml version="1.0"?>
<!--
Any copyright is dedicated to the Public Domain.
http://creativecommons.org/publicdomain/zero/1.0/
-->
<window title="Testing the worker loader"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
onload="test();">
<script type="application/javascript"
src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"/>
<script type="application/javascript"
src="chrome://mochikit/content/tests/SimpleTest/EventUtils.js"/>
<script type="application/javascript"
src="utils_mainthread.js"/>
<script type="application/javascript">
<![CDATA[
let worker;
let main = this;
function test() {
info("Starting test " + document.uri);
worker = new ChromeWorker("worker_test_loading.js");
SimpleTest.waitForExplicitFinish();
info("Chrome worker created");
worker_handler(worker);
worker.postMessage(document.uri);
ok(true, "Test in progress");
};
]]>
</script>
<body xmlns="http://www.w3.org/1999/xhtml">
<p id="display"></p>
<div id="content" style="display:none;"></div>
<pre id="test"></pre>
</body>
<label id="test-result"/>
</window>

View file

@ -1,34 +0,0 @@
/* Any copyright is dedicated to the Public Domain.
* http://creativecommons.org/publicdomain/zero/1.0/ */
function worker_handler(worker) {
worker.onerror = function(error) {
error.preventDefault();
ok(false, "error "+ error.message);
};
worker.onmessage = function(msg) {
// ok(true, "MAIN: onmessage " + JSON.stringify(msg.data));
switch (msg.data.kind) {
case "is":
SimpleTest.ok(msg.data.outcome, msg.data.description +
"( "+ msg.data.a + " ==? " + msg.data.b + ")" );
return;
case "isnot":
SimpleTest.ok(msg.data.outcome, msg.data.description +
"( "+ msg.data.a + " !=? " + msg.data.b + ")" );
return;
case "ok":
SimpleTest.ok(msg.data.condition, msg.data.description);
return;
case "info":
SimpleTest.info(msg.data.description);
return;
case "finish":
SimpleTest.finish();
return;
default:
SimpleTest.ok(false, "test_osfile.xul: wrong message " + JSON.stringify(msg.data));
return;
}
};
}

View file

@ -1,32 +0,0 @@
/* Any copyright is dedicated to the Public Domain.
* http://creativecommons.org/publicdomain/zero/1.0/ */
function log(text) {
dump("WORKER " + text + "\n");
}
function send(message) {
self.postMessage(message);
}
function finish() {
send({kind: "finish"});
}
function ok(condition, description) {
send({kind: "ok", condition: !!condition, description: "" + description});
}
function is(a, b, description) {
let outcome = a == b; // Need to decide outcome here, as not everything can be serialized
send({kind: "is", outcome: outcome, description: "" + description, a: "" + a, b: "" + b});
}
function isnot(a, b, description) {
let outcome = a != b; // Need to decide outcome here, as not everything can be serialized
send({kind: "isnot", outcome: outcome, description: "" + description, a: "" + a, b: "" + b});
}
function info(description) {
send({kind: "info", description: "" + description});
}

View file

@ -1,34 +0,0 @@
/* Any copyright is dedicated to the Public Domain.
* http://creativecommons.org/publicdomain/zero/1.0/ */
function worker_handler(worker) {
worker.onerror = function(error) {
error.preventDefault();
ok(false, "error "+error);
}
worker.onmessage = function(msg) {
ok(true, "MAIN: onmessage " + JSON.stringify(msg.data));
switch (msg.data.kind) {
case "is":
SimpleTest.ok(msg.data.outcome, msg.data.description +
"( "+ msg.data.a + " ==? " + msg.data.b + ")" );
return;
case "isnot":
SimpleTest.ok(msg.data.outcome, msg.data.description +
"( "+ msg.data.a + " !=? " + msg.data.b + ")" );
return;
case "ok":
SimpleTest.ok(msg.data.condition, msg.data.description);
return;
case "info":
SimpleTest.info(msg.data.description);
return;
case "finish":
SimpleTest.finish();
return;
default:
SimpleTest.ok(false, "test_osfile.xul: wrong message " + JSON.stringify(msg.data));
return;
}
};
}

View file

@ -1,121 +0,0 @@
/* Any copyright is dedicated to the Public Domain.
http://creativecommons.org/publicdomain/zero/1.0/ */
"use strict";
importScripts("utils_worker.js"); // Test suite code
info("Test suite configured");
importScripts("resource://gre/modules/workers/require.js");
info("Loader imported");
var PATH = "chrome://mochitests/content/chrome/toolkit/components/workerloader/tests/";
var tests = [];
var add_test = function(test) {
tests.push(test);
};
add_test(function test_setup() {
ok(typeof require != "undefined", "Function |require| is defined");
});
// Test simple loading (moduleA-depends.js requires moduleB-dependency.js)
add_test(function test_load() {
let A = require(PATH + "moduleA-depends.js");
ok(true, "Opened module A");
is(A.A, true, "Module A exported value A");
ok(!("B" in A), "Module A did not export value B");
is(A.importedFoo, "foo", "Module A re-exported B.foo");
// re-evaluating moduleB-dependency.js would cause an error, but re-requiring it shouldn't
let B = require(PATH + "moduleB-dependency.js");
ok(true, "Managed to re-require module B");
is(B.B, true, "Module B exported value B");
is(B.foo, "foo", "Module B exported value foo");
});
// Test simple circular loading (moduleC-circular.js and moduleD-circular.js require each other)
add_test(function test_circular() {
let C = require(PATH + "moduleC-circular.js");
ok(true, "Loaded circular modules C and D");
is(C.copiedFromD.copiedFromC.enteredC, true, "Properties exported by C before requiring D can be seen by D immediately");
let D = require(PATH + "moduleD-circular.js");
is(D.exportedFromC.finishedC, true, "Properties exported by C after requiring D can be seen by D eventually");
});
// Testing error cases
add_test(function test_exceptions() {
let should_throw = function(f) {
try {
f();
return null;
} catch (ex) {
return ex;
}
};
let exn = should_throw(() => require(PATH + "this module doesn't exist"));
ok(!!exn, "Attempting to load a module that doesn't exist raises an error");
exn = should_throw(() => require(PATH + "moduleE-throws-during-require.js"));
ok(!!exn, "Attempting to load a module that throws at toplevel raises an error");
is(exn.moduleName, PATH + "moduleE-throws-during-require.js",
"moduleName is correct");
isnot(exn.moduleStack.indexOf("moduleE-throws-during-require.js"), -1,
"moduleStack contains the name of the module");
is(exn.lineNumber, 10, "The error comes with the right line number");
exn = should_throw(() => require(PATH + "moduleF-syntaxerror.xml"));
ok(!!exn, "Attempting to load a non-well formatted module raises an error");
exn = should_throw(() => require(PATH + "moduleG-throws-later.js").doThrow());
ok(!!exn, "G.doThrow() has raised an error");
info(exn);
ok(exn.toString().startsWith("TypeError"), "The exception is a TypeError.");
is(exn.moduleName, PATH + "moduleG-throws-later.js", "The name of the module is correct");
isnot(exn.moduleStack.indexOf("moduleG-throws-later.js"), -1,
"The name of the right file appears somewhere in the stack");
is(exn.lineNumber, 11, "The error comes with the right line number");
});
function get_exn(f) {
try {
f();
return undefined;
} catch (ex) {
return ex;
}
}
// Test module.exports
add_test(function test_module_dot_exports() {
let H = require(PATH + "moduleH-module-dot-exports.js");
is(H.key, "value", "module.exports worked");
let H2 = require(PATH + "moduleH-module-dot-exports.js");
is(H2.key, "value", "module.exports returned the same key");
ok(H2 === H, "module.exports returned the same module the second time");
let exn = get_exn(() => H.key = "this should not be accepted");
ok(exn instanceof TypeError, "Cannot alter value in module.exports after export");
exn = get_exn(() => H.key2 = "this should not be accepted, either");
ok(exn instanceof TypeError, "Cannot add value to module.exports after export");
});
self.onmessage = function(message) {
for (let test of tests) {
info("Entering " + test.name);
try {
test();
} catch (ex) {
ok(false, "Test " + test.name + " failed");
info(ex);
info(ex.stack);
}
info("Leaving " + test.name);
}
finish();
};