Automatic update from web-platform-tests Improve idlharness-ShadowRealm integration By exposing a fetch_spec() on globalThis in testharness-shadowrealm-inner, we no longer need to have IDL tests in separate files for ShadowRealm, as the regular idlharness.js will just run there. Delete all existing idlharness-shadowrealm.window.js files and incorporate them into their neighbouring idlharness.any.js files. It seems sufficient to run the IDL tests only in shadowrealm-in-window; repeating them in every ShadowRealm scope seems like overkill. -- Improve test message in idlharness This gets me every time. If we are testing that an interface is not exposed, we should be clear about that in the test message. -- Don't test namespaces in idlharness if not exposed Instead, if a namespace is not exposed, test that there is no global property of that name, similar to what we do with interfaces. -- wpt-commits: 67880a4eb83ca9aa732eec4b35a1971ff5bf37ff, 524e1e0643c9d42e74f0bec6092227738b605f76, 49980192b50a30cd8bbea9b6baab9ac191eb1eb7 wpt-pr: 49342
39 lines
1.3 KiB
JavaScript
39 lines
1.3 KiB
JavaScript
// testharness file with ShadowRealm utilities to be imported inside ShadowRealm
|
|
|
|
/**
|
|
* Set up all properties on the ShadowRealm's global object that tests will
|
|
* expect to be present.
|
|
*
|
|
* @param {string} queryString - string to use as value for location.search,
|
|
* used for subsetting some tests
|
|
* @param {function} fetchAdaptor - a function that takes a resource URI and
|
|
* returns a function which itself takes a (resolve, reject) pair from the
|
|
* hosting realm, and calls resolve with the text result of fetching the
|
|
* resource, or reject with a string indicating the error that occurred
|
|
*/
|
|
globalThis.setShadowRealmGlobalProperties = function (queryString, fetchAdaptor) {
|
|
globalThis.fetch_json = (resource) => {
|
|
const executor = fetchAdaptor(resource);
|
|
return new Promise(executor).then((s) => JSON.parse(s));
|
|
};
|
|
|
|
// Used only by idlharness.js
|
|
globalThis.fetch_spec = (spec) => {
|
|
const resource = `/interfaces/${spec}.idl`;
|
|
const executor = fetchAdaptor(resource);
|
|
return new Promise(executor).then(
|
|
idl => ({ spec, idl }),
|
|
() => {
|
|
throw new IdlHarnessError(`Error fetching ${resource}.`);
|
|
});
|
|
}
|
|
|
|
globalThis.location = { search: queryString };
|
|
};
|
|
|
|
globalThis.GLOBAL = {
|
|
isWindow: function() { return false; },
|
|
isWorker: function() { return false; },
|
|
isShadowRealm: function() { return true; },
|
|
};
|