wpt: create a command instead of a test

This commit is contained in:
Pierre Tachoire
2023-10-10 17:05:31 +02:00
parent 24e8de00ae
commit 8321aa42c7
2 changed files with 23 additions and 11 deletions

View File

@@ -73,18 +73,28 @@ pub fn build(b: *std.build.Builder) !void {
const test_step = b.step("test", "Run unit tests"); const test_step = b.step("test", "Run unit tests");
test_step.dependOn(&run_tests.step); test_step.dependOn(&run_tests.step);
// wpt tests // wpt
// ----- // -----
// compile // compile and install
const wpt = b.addTest(.{ .root_source_file = .{ .path = "src/run_wpt.zig" } }); const wpt = b.addExecutable(.{
.name = "browsercore-wpt",
.root_source_file = .{ .path = "src/run_wpt.zig" },
.target = target,
.optimize = mode,
});
try common(wpt, options); try common(wpt, options);
wpt.single_threaded = true; b.installArtifact(wpt);
const run_wpt = b.addRunArtifact(wpt);
// run
const wpt_cmd = b.addRunArtifact(wpt);
wpt_cmd.step.dependOn(b.getInstallStep());
if (b.args) |args| {
wpt_cmd.addArgs(args);
}
// step // step
const wpt_step = b.step("wpt", "Run Web Platform Tests"); const wpt_step = b.step("wpt", "WPT tests");
wpt_step.dependOn(&run_wpt.step); wpt_step.dependOn(&wpt_cmd.step);
} }
fn common( fn common(

View File

@@ -63,10 +63,12 @@ const FileLoader = struct {
// the HTML page. // the HTML page.
// Once browsercore will have the html loader, it would be useful to refacto // Once browsercore will have the html loader, it would be useful to refacto
// this test to use it. // this test to use it.
test "WPT tests suite" { pub fn main() !void {
std.debug.print("Running WPT test suite\n", .{}); std.debug.print("Running WPT test suite\n", .{});
const alloc = std.testing.allocator; var gpa = std.heap.GeneralPurposeAllocator(.{}){};
defer _ = gpa.deinit();
const alloc = gpa.allocator();
// initialize VM JS lib. // initialize VM JS lib.
const vm = jsruntime.VM.init(); const vm = jsruntime.VM.init();
@@ -92,7 +94,7 @@ test "WPT tests suite" {
run += 1; run += 1;
// create an arena and deinit it for each test case. // create an arena and deinit it for each test case.
var arena = std.heap.ArenaAllocator.init(std.testing.allocator); var arena = std.heap.ArenaAllocator.init(alloc);
defer arena.deinit(); defer arena.deinit();
// TODO I don't use testing.expect here b/c I want to execute all the // TODO I don't use testing.expect here b/c I want to execute all the
@@ -120,8 +122,8 @@ test "WPT tests suite" {
if (failures > 0) { if (failures > 0) {
std.debug.print("{d}/{d} tests failures\n", .{ failures, run }); std.debug.print("{d}/{d} tests failures\n", .{ failures, run });
std.os.exit(1);
} }
try std.testing.expect(failures == 0);
} }
// 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