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");
test_step.dependOn(&run_tests.step);
// wpt tests
// wpt
// -----
// compile
const wpt = b.addTest(.{ .root_source_file = .{ .path = "src/run_wpt.zig" } });
// compile and install
const wpt = b.addExecutable(.{
.name = "browsercore-wpt",
.root_source_file = .{ .path = "src/run_wpt.zig" },
.target = target,
.optimize = mode,
});
try common(wpt, options);
wpt.single_threaded = true;
const run_wpt = b.addRunArtifact(wpt);
b.installArtifact(wpt);
// run
const wpt_cmd = b.addRunArtifact(wpt);
wpt_cmd.step.dependOn(b.getInstallStep());
if (b.args) |args| {
wpt_cmd.addArgs(args);
}
// step
const wpt_step = b.step("wpt", "Run Web Platform Tests");
wpt_step.dependOn(&run_wpt.step);
const wpt_step = b.step("wpt", "WPT tests");
wpt_step.dependOn(&wpt_cmd.step);
}
fn common(

View File

@@ -63,10 +63,12 @@ const FileLoader = struct {
// the HTML page.
// Once browsercore will have the html loader, it would be useful to refacto
// this test to use it.
test "WPT tests suite" {
pub fn main() !void {
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.
const vm = jsruntime.VM.init();
@@ -92,7 +94,7 @@ test "WPT tests suite" {
run += 1;
// 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();
// 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) {
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