fune/dom/base/test/jsmodules/test_import_meta_resolve.html
Yoshi Cheng-Hao Huang d17eb87e4d Bug 1775424 - Part 1: Impl import.meta.resolve() on browser. r=jonco,yulia
Define 'resolve()' function on import.meta object on browser.

Add mochitests for import.meta.resolve, as some of the wpt tests for
import.meta.resolve cannot be run due to some bugs in wpt testing framework.
See https://bugzilla.mozilla.org/show_bug.cgi?id=1785806

Differential Revision: https://phabricator.services.mozilla.com/D154105
2022-08-30 18:42:53 +00:00

65 lines
2 KiB
HTML

<!DOCTYPE html>
<head>
<meta charset=utf-8>
<title>Test import.meta.resolve</title>
</head>
<body onload='testLoaded()'>
<script src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
<script>
SimpleTest.waitForExplicitFinish();
function assertThrowsTypeError(fn, msg) {
let hasThrown = false;
try {
fn();
} catch (error) {
hasThrown = true;
ok(error instanceof TypeError, "Thrown error should be TypeError.");
}
ok(hasThrown, msg);
}
function testLoaded() {
SimpleTest.finish();
}
</script>
<script type="module">
is(typeof import.meta.resolve, "function", "resolve should be a function.");
is(import.meta.resolve.name, "resolve", "resolve.name should be 'resolve'.");
is(import.meta.resolve.length, 1, "resolve.length should be 1.");
is(Object.getPrototypeOf(import.meta.resolve), Function.prototype,
"prototype of resolve should be Function.prototype.");
</script>
<script type="module">
is(import.meta.resolve("http://example.com/"), "http://example.com/",
"resolve specifiers with absolute path.");
</script>
<script type="module">
is(import.meta.resolve("./x"), (new URL("./x", import.meta.url)).href,
"resolve specifiers with relative path.");
</script>
<script type="module">
assertThrowsTypeError(() => new import.meta.resolve("./x"),
"import.meta.resolve is not a constructor.");
</script>
<script type="module">
// Fails to resolve the specifier should throw a TypeError.
assertThrowsTypeError(() => import.meta.resolve("failed"),
"import.meta.resolve should throw if fails to resolve");
</script>
<script type="module">
for (const name of Reflect.ownKeys(import.meta)) {
const desc = Object.getOwnPropertyDescriptor(import.meta, name);
is(desc.writable, true, name + ".writable should be true.");
is(desc.enumerable, true, name + ".enumerable should be true.");
is(desc.configurable, true, name + ".configurable should be true.");
}
</script>
</body>