wpt: split script exec and wait loop

This commit is contained in:
Pierre Tachoire
2024-05-23 15:10:28 +02:00
parent b4f445183c
commit 77bf332f13

View File

@@ -104,6 +104,7 @@ pub fn run(arena: *std.heap.ArenaAllocator, comptime dir: []const u8, f: []const
if (!res.success) {
return res;
}
res.deinit(alloc);
// loop hover the scripts.
const doc = parser.documentHTMLToDocument(html_doc);
@@ -124,6 +125,7 @@ pub fn run(arena: *std.heap.ArenaAllocator, comptime dir: []const u8, f: []const
if (!res.success) {
return res;
}
res.deinit(alloc);
}
// If the script as a source text, execute it.
@@ -134,6 +136,7 @@ pub fn run(arena: *std.heap.ArenaAllocator, comptime dir: []const u8, f: []const
if (!res.success) {
return res;
}
res.deinit(alloc);
}
// Mark tests as ready to run.
@@ -146,20 +149,26 @@ pub fn run(arena: *std.heap.ArenaAllocator, comptime dir: []const u8, f: []const
loadevt,
);
// wait for all async executions
res = try js_env.waitTryCatch(alloc);
if (!res.success) {
return res;
}
res.deinit(alloc);
// Check the final test status.
res = try evalJS(js_env, alloc, "report.status;", "teststatus");
if (!res.success) {
return res;
}
res.deinit(alloc);
// return the detailed result.
return try evalJS(js_env, alloc, "report.log", "teststatus");
}
fn evalJS(env: jsruntime.Env, alloc: std.mem.Allocator, script: []const u8, name: ?[]const u8) !jsruntime.JSResult {
var res = jsruntime.JSResult{};
try env.run(alloc, script, name, &res, null);
return res;
return try env.execTryCatch(alloc, script, name);
}
// browse the path to find the tests list.