mirror of
https://github.com/lightpanda-io/browser.git
synced 2025-10-29 23:23:28 +00:00
better error messages in WPT report (in line with what main branch is doing)
This commit is contained in:
@@ -411,14 +411,17 @@ test "Browser.DOM.node" {
|
|||||||
var runner = try testing.jsRunner(testing.tracking_allocator, .{});
|
var runner = try testing.jsRunner(testing.tracking_allocator, .{});
|
||||||
defer runner.deinit();
|
defer runner.deinit();
|
||||||
|
|
||||||
try runner.exec(
|
{
|
||||||
\\ function trimAndReplace(str) {
|
var err_out: ?[]const u8 = null;
|
||||||
\\ str = str.replace(/(\r\n|\n|\r)/gm,'');
|
try runner.exec(
|
||||||
\\ str = str.replace(/\s+/g, ' ');
|
\\ function trimAndReplace(str) {
|
||||||
\\ str = str.trim();
|
\\ str = str.replace(/(\r\n|\n|\r)/gm,'');
|
||||||
\\ return str;
|
\\ str = str.replace(/\s+/g, ' ');
|
||||||
\\ }
|
\\ str = str.trim();
|
||||||
);
|
\\ return str;
|
||||||
|
\\ }
|
||||||
|
, &err_out);
|
||||||
|
}
|
||||||
|
|
||||||
try runner.testCases(&.{
|
try runner.testCases(&.{
|
||||||
.{ "document.body.compareDocumentPosition(document.firstChild); ", "10" },
|
.{ "document.body.compareDocumentPosition(document.firstChild); ", "10" },
|
||||||
|
|||||||
@@ -468,17 +468,18 @@ pub const JsRunner = struct {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn exec(self: *JsRunner, src: []const u8) !void {
|
pub fn exec(self: *JsRunner, src: []const u8, err_msg: *?[]const u8) !void {
|
||||||
_ = try self.eval(src);
|
_ = try self.eval(src, err_msg);
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn eval(self: *JsRunner, src: []const u8) !Env.Value {
|
pub fn eval(self: *JsRunner, src: []const u8, err_msg: *?[]const u8) !Env.Value {
|
||||||
var try_catch: Env.TryCatch = undefined;
|
var try_catch: Env.TryCatch = undefined;
|
||||||
try_catch.init(self.executor);
|
try_catch.init(self.executor);
|
||||||
defer try_catch.deinit();
|
defer try_catch.deinit();
|
||||||
|
|
||||||
return self.executor.exec(src, null) catch |err| {
|
return self.executor.exec(src, null) catch |err| {
|
||||||
if (try try_catch.err(self.arena)) |msg| {
|
if (try try_catch.err(self.arena)) |msg| {
|
||||||
|
err_msg.* = msg;
|
||||||
std.debug.print("Error runnign script: {s}\n", .{msg});
|
std.debug.print("Error runnign script: {s}\n", .{msg});
|
||||||
}
|
}
|
||||||
return err;
|
return err;
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ const polyfill = @import("../browser/polyfill/polyfill.zig");
|
|||||||
// runWPT parses the given HTML file, starts a js env and run the first script
|
// runWPT parses the given HTML file, starts a js env and run the first script
|
||||||
// tags containing javascript sources.
|
// tags containing javascript sources.
|
||||||
// It loads first the js libs files.
|
// It loads first the js libs files.
|
||||||
pub fn run(arena: Allocator, comptime dir: []const u8, f: []const u8, loader: *FileLoader, msg_out: *?[]const u8) ![]const u8 {
|
pub fn run(arena: Allocator, comptime dir: []const u8, f: []const u8, loader: *FileLoader, err_msg: *?[]const u8) ![]const u8 {
|
||||||
// document
|
// document
|
||||||
const html = blk: {
|
const html = blk: {
|
||||||
const file = try std.fs.cwd().openFile(f, .{});
|
const file = try std.fs.cwd().openFile(f, .{});
|
||||||
@@ -48,7 +48,7 @@ pub fn run(arena: Allocator, comptime dir: []const u8, f: []const u8, loader: *F
|
|||||||
|
|
||||||
// display console logs
|
// display console logs
|
||||||
defer {
|
defer {
|
||||||
const res = runner.eval("console.join('\\n');") catch unreachable;
|
const res = runner.eval("console.join('\\n');", err_msg) catch unreachable;
|
||||||
const log = res.toString(arena) catch unreachable;
|
const log = res.toString(arena) catch unreachable;
|
||||||
if (log.len > 0) {
|
if (log.len > 0) {
|
||||||
std.debug.print("-- CONSOLE LOG\n{s}\n--\n", .{log});
|
std.debug.print("-- CONSOLE LOG\n{s}\n--\n", .{log});
|
||||||
@@ -63,7 +63,7 @@ pub fn run(arena: Allocator, comptime dir: []const u8, f: []const u8, loader: *F
|
|||||||
\\ console.debug = function () {
|
\\ console.debug = function () {
|
||||||
\\ console.push("debug", ...arguments);
|
\\ console.push("debug", ...arguments);
|
||||||
\\ };
|
\\ };
|
||||||
);
|
, err_msg);
|
||||||
|
|
||||||
// loop over the scripts.
|
// loop over the scripts.
|
||||||
const doc = parser.documentHTMLToDocument(runner.state.document.?);
|
const doc = parser.documentHTMLToDocument(runner.state.document.?);
|
||||||
@@ -79,12 +79,12 @@ pub fn run(arena: Allocator, comptime dir: []const u8, f: []const u8, loader: *F
|
|||||||
// no need to free path, thanks to the arena.
|
// no need to free path, thanks to the arena.
|
||||||
path = try fspath.join(arena, &.{ "/", dirname, path });
|
path = try fspath.join(arena, &.{ "/", dirname, path });
|
||||||
}
|
}
|
||||||
try runner.exec(try loader.get(path));
|
try runner.exec(try loader.get(path), err_msg);
|
||||||
}
|
}
|
||||||
|
|
||||||
// If the script as a source text, execute it.
|
// If the script as a source text, execute it.
|
||||||
const src = try parser.nodeTextContent(s) orelse continue;
|
const src = try parser.nodeTextContent(s) orelse continue;
|
||||||
try runner.exec(src);
|
try runner.exec(src, err_msg);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Mark tests as ready to run.
|
// Mark tests as ready to run.
|
||||||
@@ -104,17 +104,17 @@ pub fn run(arena: Allocator, comptime dir: []const u8, f: []const u8, loader: *F
|
|||||||
defer try_catch.deinit();
|
defer try_catch.deinit();
|
||||||
runner.loop.run() catch |err| {
|
runner.loop.run() catch |err| {
|
||||||
if (try try_catch.err(arena)) |msg| {
|
if (try try_catch.err(arena)) |msg| {
|
||||||
msg_out.* = msg;
|
err_msg.* = msg;
|
||||||
}
|
}
|
||||||
return err;
|
return err;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check the final test status.
|
// Check the final test status.
|
||||||
try runner.exec("report.status;");
|
try runner.exec("report.status;", err_msg);
|
||||||
|
|
||||||
// return the detailed result.
|
// return the detailed result.
|
||||||
const res = try runner.eval("report.log");
|
const res = try runner.eval("report.log", err_msg);
|
||||||
return res.toString(arena);
|
return res.toString(arena);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user