mirror of
https://github.com/servo/servo.git
synced 2025-07-11 17:33:47 +01:00
81 lines
2.1 KiB
HTML
81 lines
2.1 KiB
HTML
<!DOCTYPE html>
|
|
<html>
|
|
<script src="/resources/testharness.js"></script>
|
|
<script src="/resources/testharnessreport.js"></script>
|
|
<script>
|
|
setup({allow_uncaught_exception : true});
|
|
|
|
// Hacky glue code to run Jest-based tests as WPT tests.
|
|
// Only supports resolving.js.
|
|
function require(name) {
|
|
return {
|
|
'URL': URL,
|
|
'parseFromString': parseFromString,
|
|
'resolve': resolve
|
|
};
|
|
}
|
|
|
|
function expect(v) {
|
|
return {
|
|
toMatchURL: expected => assert_equals(v, expected),
|
|
toThrow: expected => assert_throws(expected(), v)
|
|
};
|
|
}
|
|
|
|
let current_message = '';
|
|
function describe(message, f) {
|
|
const old = current_message;
|
|
if (current_message !== '') {
|
|
current_message += ' / ';
|
|
}
|
|
current_message += message;
|
|
f();
|
|
current_message = old;
|
|
}
|
|
function it(message, f) {
|
|
const old = current_message;
|
|
if (current_message !== '') {
|
|
current_message += ' / ';
|
|
}
|
|
current_message += message;
|
|
test(t => t.step_func(f)(), current_message);
|
|
current_message = old;
|
|
}
|
|
|
|
// Creates a new Document (via <iframe>) and add an inline import map.
|
|
// Currently document.write() is used to make everything synchronous, which
|
|
// is just needed for running the existing Jest-based tests easily.
|
|
function parseFromString(mapString, mapBaseURL) {
|
|
const iframe = document.createElement('iframe');
|
|
document.body.appendChild(iframe);
|
|
iframe.contentDocument.write(`
|
|
<base href="${mapBaseURL}">
|
|
<script>
|
|
let isError = false;
|
|
function onError() {
|
|
isError = true;
|
|
}
|
|
</sc` + `ript>
|
|
<script type="importmap" onerror="onError()">
|
|
${mapString}
|
|
</sc` + `ript>
|
|
`);
|
|
iframe.contentDocument.close();
|
|
return iframe;
|
|
}
|
|
|
|
// URL resolution is tested using Chromium's `internals`.
|
|
// TODO(hiroshige): Remove the Chromium-specific dependency.
|
|
function resolve(specifier, map, baseURL) {
|
|
return internals.resolveModuleSpecifier(specifier,
|
|
baseURL,
|
|
map.contentDocument);
|
|
}
|
|
|
|
</script>
|
|
|
|
<!--
|
|
resolving.js is
|
|
https://github.com/WICG/import-maps/blob/master/reference-implementation/__tests__/resolving.js
|
|
-->
|
|
<script type="module" src="resources/resolving.js"></script>
|