mirror of
https://github.com/servo/servo.git
synced 2025-10-15 16:00:28 +01:00
58 lines
No EOL
1.8 KiB
JavaScript
58 lines
No EOL
1.8 KiB
JavaScript
/**
|
|
* AUTO-GENERATED - DO NOT EDIT. Source: https://github.com/gpuweb/cts
|
|
**/
|
|
|
|
import { DefaultTestFileLoader } from '../framework/file_loader.js';
|
|
import { Logger } from '../framework/logging/logger.js';
|
|
import { parseQuery } from '../framework/query/parseQuery.js';
|
|
import { AsyncMutex } from '../framework/util/async_mutex.js';
|
|
import { assert } from '../framework/util/util.js';
|
|
import { optionEnabled } from './helper/options.js';
|
|
import { TestWorker } from './helper/test_worker.js';
|
|
|
|
(async () => {
|
|
const loader = new DefaultTestFileLoader();
|
|
const qs = new URLSearchParams(window.location.search).getAll('q');
|
|
assert(qs.length === 1, 'currently, there must be exactly one ?q=');
|
|
const testcases = await loader.loadCases(parseQuery(qs[0]));
|
|
await addWPTTests(testcases);
|
|
})(); // Note: `async_test`s must ALL be added within the same task. This function *must not* be async.
|
|
|
|
|
|
function addWPTTests(testcases) {
|
|
const worker = optionEnabled('worker') ? new TestWorker(false) : undefined;
|
|
const log = new Logger(false);
|
|
const mutex = new AsyncMutex();
|
|
const running = [];
|
|
|
|
for (const testcase of testcases) {
|
|
const name = testcase.query.toString();
|
|
|
|
const wpt_fn = function () {
|
|
const p = mutex.with(async () => {
|
|
const [rec, res] = log.record(name);
|
|
|
|
if (worker) {
|
|
await worker.run(rec, name);
|
|
} else {
|
|
await testcase.run(rec);
|
|
}
|
|
|
|
this.step(() => {
|
|
// Unfortunately, it seems not possible to surface any logs for warn/skip.
|
|
if (res.status === 'fail') {
|
|
throw (res.logs || []).map(s => s.toJSON()).join('\n\n');
|
|
}
|
|
});
|
|
this.done();
|
|
});
|
|
running.push(p);
|
|
return p;
|
|
};
|
|
|
|
async_test(wpt_fn, name);
|
|
}
|
|
|
|
return Promise.all(running).then(() => log);
|
|
}
|
|
//# sourceMappingURL=wpt.js.map
|