wpt: use the parser from string and fix mem leak

This commit is contained in:
Pierre Tachoire
2023-10-03 16:47:22 +02:00
parent 1c7655bfb5
commit a27a24fe8c

View File

@@ -51,8 +51,10 @@ test {
defer alloc.free(libs[1]); defer alloc.free(libs[1]);
// browse the dir to get the tests dynamically. // browse the dir to get the tests dynamically.
const testcases = try findWPTTests(alloc, wpt_dir); const list = try findWPTTests(alloc, wpt_dir);
defer alloc.free(testcases); defer list.deinit();
const testcases: [][]const u8 = list.items;
var failures: usize = 0; var failures: usize = 0;
for (testcases) |tc| { for (testcases) |tc| {
@@ -91,7 +93,7 @@ fn runWPT(arena: *std.heap.ArenaAllocator, f: []const u8, libs: []const []const
const alloc = arena.allocator(); const alloc = arena.allocator();
// document // document
const htmldoc = parser.documentHTMLParse(f); const htmldoc = try parser.documentHTMLParse(alloc, f);
const doc = parser.documentHTMLToDocument(htmldoc); const doc = parser.documentHTMLToDocument(htmldoc);
// create JS env // create JS env
@@ -141,7 +143,7 @@ fn runWPT(arena: *std.heap.ArenaAllocator, f: []const u8, libs: []const []const
} }
// browse the path to find the tests list. // browse the path to find the tests list.
fn findWPTTests(allocator: std.mem.Allocator, path: []const u8) ![]const []const u8 { fn findWPTTests(allocator: std.mem.Allocator, path: []const u8) !*std.ArrayList([]const u8) {
var dir = try std.fs.cwd().openIterableDir(path, .{ .no_follow = true }); var dir = try std.fs.cwd().openIterableDir(path, .{ .no_follow = true });
defer dir.close(); defer dir.close();
@@ -161,5 +163,5 @@ fn findWPTTests(allocator: std.mem.Allocator, path: []const u8) ![]const []const
try tc.append(try std.fs.path.join(allocator, &.{ path, entry.path })); try tc.append(try std.fs.path.join(allocator, &.{ path, entry.path }));
} }
return tc.items; return &tc;
} }