diff options
-rw-r--r-- | tools/wpt/expectation.json | 4 | ||||
-rw-r--r-- | tools/wpt/runner.ts | 14 |
2 files changed, 16 insertions, 2 deletions
diff --git a/tools/wpt/expectation.json b/tools/wpt/expectation.json index ebec7caf7..e9ee8e05e 100644 --- a/tools/wpt/expectation.json +++ b/tools/wpt/expectation.json @@ -1087,8 +1087,8 @@ "EventTarget-constructible.any.html": true, "EventTarget-constructible.any.worker.html": true, "Event-constructors.any.html": [ - "Untitled 3", - "Untitled 4" + "Event constructors 3", + "Event constructors 4" ], "Event-constructors.any.worker.html": [ "Event constructors 3", diff --git a/tools/wpt/runner.ts b/tools/wpt/runner.ts index a3c22006a..1b40e25b8 100644 --- a/tools/wpt/runner.ts +++ b/tools/wpt/runner.ts @@ -76,12 +76,15 @@ export async function runSingleTest( reporter: (result: TestCaseResult) => void, inspectBrk: boolean, ): Promise<TestResult> { + const timeout = _options.timeout === "long" ? 60_000 : 20_000; + const { title } = Object.fromEntries(_options.script_metadata || []); const bundle = await generateBundle(url); const tempFile = await Deno.makeTempFile({ prefix: "wpt-bundle-", suffix: ".js", }); + let interval; try { await Deno.writeTextFile(tempFile, bundle); @@ -107,6 +110,7 @@ export async function runSingleTest( "[]", ); + const start = performance.now(); const proc = new Deno.Command(denoBinary(), { args, env: { @@ -124,10 +128,19 @@ export async function runSingleTest( const lines = proc.stderr.pipeThrough(new TextDecoderStream()).pipeThrough( new TextLineStream(), ); + interval = setInterval(() => { + const passedTime = performance.now() - start; + if (passedTime > timeout) { + proc.kill("SIGINT"); + } + }, 1000); for await (const line of lines) { if (line.startsWith("{")) { const data = JSON.parse(line); const result = { ...data, passed: data.status == 0 }; + if (title && /^Untitled( \d+)?$/.test(result.name)) { + result.name = `${title}${result.name.slice(8)}`; + } cases.push(result); reporter(result); } else if (line.startsWith("#$#$#{")) { @@ -149,6 +162,7 @@ export async function runSingleTest( stderr, }; } finally { + clearInterval(interval); await Deno.remove(tempFile); } } |