mirror of
https://github.com/servo/servo.git
synced 2025-08-11 00:15:32 +01:00
Update web-platform-tests to revision 66f38302334f162d363afcf4a1792d895072f3ef
This commit is contained in:
parent
36f5b69224
commit
b198cd722a
622 changed files with 3374 additions and 2001 deletions
76
tests/wpt/web-platform-tests/common/subset-tests-by-key.js
Normal file
76
tests/wpt/web-platform-tests/common/subset-tests-by-key.js
Normal file
|
@ -0,0 +1,76 @@
|
|||
// Only test a subset of tests with ?include=Foo or ?exclude=Foo in the URL.
|
||||
// Can be used together with <meta name="variant" content="...">
|
||||
// Sample usage:
|
||||
// for (const test of tests) {
|
||||
// subsetTestByKey("Foo", async_test, test.fn, test.name);
|
||||
// }
|
||||
(function() {
|
||||
var subTestKeyPattern = null;
|
||||
var match;
|
||||
var collectKeys = false;
|
||||
var collectCounts = false;
|
||||
var keys = {};
|
||||
var exclude = false;
|
||||
if (location.search) {
|
||||
match = /(?:^\?|&)(include|exclude)=([^&]+)?/.exec(location.search);
|
||||
if (match) {
|
||||
subTestKeyPattern = new RegExp(`^${match[2]}$`);
|
||||
if (match[1] === 'exclude') {
|
||||
exclude = true;
|
||||
}
|
||||
}
|
||||
// Below is utility code to generate <meta> for copy/paste into tests.
|
||||
// Sample usage:
|
||||
// test.html?get-keys
|
||||
match = /(?:^\?|&)get-keys(&get-counts)?(?:&|$)/.exec(location.search);
|
||||
if (match) {
|
||||
collectKeys = true;
|
||||
if (match[1]) {
|
||||
collectCounts = true;
|
||||
}
|
||||
add_completion_callback(() => {
|
||||
var metas = [];
|
||||
var template = '<meta name="variant" content="?include=%s">';
|
||||
if (collectCounts) {
|
||||
template += ' <!--%s-->';
|
||||
}
|
||||
for (var key in keys) {
|
||||
var meta = template.replace("%s", key);
|
||||
if (collectCounts) {
|
||||
meta = meta.replace("%s", keys[key]);
|
||||
}
|
||||
metas.push(meta);
|
||||
}
|
||||
var pre = document.createElement('pre');
|
||||
pre.textContent = metas.join('\n') + '\n';
|
||||
document.body.insertBefore(pre, document.body.firstChild);
|
||||
document.getSelection().selectAllChildren(pre);
|
||||
});
|
||||
}
|
||||
}
|
||||
function shouldRunSubTest(key) {
|
||||
if (key && subTestKeyPattern) {
|
||||
var found = subTestKeyPattern.test(key);
|
||||
if (exclude) {
|
||||
return !found;
|
||||
}
|
||||
return found;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
function subsetTestByKey(key, testFunc, ...args) {
|
||||
if (collectKeys) {
|
||||
if (collectCounts && key in keys) {
|
||||
keys[key]++;
|
||||
} else {
|
||||
keys[key] = 1;
|
||||
}
|
||||
}
|
||||
if (shouldRunSubTest(key)) {
|
||||
return testFunc(...args);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
self.shouldRunSubTest = shouldRunSubTest;
|
||||
self.subsetTestByKey = subsetTestByKey;
|
||||
})();
|
Loading…
Add table
Add a link
Reference in a new issue