From 54148a8c888f47361c141f0635671e1ed12ddba4 Mon Sep 17 00:00:00 2001 From: Noam Preil Date: Sat, 27 Jun 2020 20:01:20 -0400 Subject: [PATCH] Stage2/TestHarness: Improve progress reporting --- src-self-hosted/test.zig | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/src-self-hosted/test.zig b/src-self-hosted/test.zig index af9ffef509..248792b42c 100644 --- a/src-self-hosted/test.zig +++ b/src-self-hosted/test.zig @@ -391,8 +391,10 @@ pub const TestContext = struct { prg_node.activate(); defer prg_node.end(); - // So that we can see which test case failed when the leak checker goes off. - progress.refresh(); + // So that we can see which test case failed when the leak checker goes off, + // or there's an internal error + progress.initial_delay_ns = 0; + progress.refresh_rate_ns = 0; const info = try std.zig.system.NativeTargetInfo.detect(std.testing.allocator, case.target); try self.runOneCase(std.testing.allocator, &prg_node, case, info.target); @@ -408,10 +410,6 @@ pub const TestContext = struct { const root_pkg = try Package.create(allocator, tmp.dir, ".", tmp_src_path); defer root_pkg.destroy(); - var prg_node = root_node.start(case.name, case.updates.items.len); - prg_node.activate(); - defer prg_node.end(); - const bin_name = try std.zig.binNameAlloc(allocator, "test_case", target, case.output_mode, null); defer allocator.free(bin_name); @@ -434,7 +432,7 @@ pub const TestContext = struct { defer module.deinit(); for (case.updates.items) |update, update_index| { - var update_node = prg_node.start("update", 4); + var update_node = root_node.start("update", 3); update_node.activate(); defer update_node.end(); @@ -451,6 +449,7 @@ pub const TestContext = struct { switch (update.case) { .Transformation => |expected_output| { + update_node.estimated_total_items = 5; var emit_node = update_node.start("emit", null); emit_node.activate(); var new_zir_module = try zir.emit(allocator, module); @@ -464,9 +463,15 @@ pub const TestContext = struct { try new_zir_module.writeToStream(allocator, out_zir.outStream()); write_node.end(); + var test_node = update_node.start("assert", null); + test_node.activate(); std.testing.expectEqualSlices(u8, expected_output, out_zir.items); + test_node.end(); }, .Error => |e| { + var test_node = update_node.start("assert", null); + test_node.activate(); + defer test_node.end(); var handled_errors = try allocator.alloc(bool, e.len); defer allocator.free(handled_errors); for (handled_errors) |*h| { @@ -495,6 +500,7 @@ pub const TestContext = struct { } }, .Execution => |expected_stdout| { + update_node.estimated_total_items = 4; var exec_result = x: { var exec_node = update_node.start("execute", null); exec_node.activate(); @@ -511,6 +517,10 @@ pub const TestContext = struct { .cwd_dir = tmp.dir, }); }; + var test_node = update_node.start("test", null); + test_node.activate(); + defer test_node.end(); + defer allocator.free(exec_result.stdout); defer allocator.free(exec_result.stderr); switch (exec_result.term) {