From f22443bb05a6be6c3ade08254f52fdd05eeb2910 Mon Sep 17 00:00:00 2001 From: Sebsatian Keller Date: Sun, 13 Feb 2022 14:19:33 +0100 Subject: [PATCH] Fixed progress indicator for `zig test` (#10859) Previously the progress displayed the first item as [0/x]. This was misleading when x is the number of items. The first item should be displayed as [1/x] --- lib/std/Progress.zig | 5 +++-- lib/std/special/test_runner.zig | 4 ++-- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/lib/std/Progress.zig b/lib/std/Progress.zig index 24b66c1162..ecef04c600 100644 --- a/lib/std/Progress.zig +++ b/lib/std/Progress.zig @@ -261,6 +261,7 @@ fn refreshWithHeldLock(self: *Progress) void { need_ellipse = false; const eti = @atomicLoad(usize, &node.unprotected_estimated_total_items, .Monotonic); const completed_items = @atomicLoad(usize, &node.unprotected_completed_items, .Monotonic); + const current_item = completed_items + 1; if (node.name.len != 0 or eti > 0) { if (node.name.len != 0) { self.bufWrite(&end, "{s}", .{node.name}); @@ -268,11 +269,11 @@ fn refreshWithHeldLock(self: *Progress) void { } if (eti > 0) { if (need_ellipse) self.bufWrite(&end, " ", .{}); - self.bufWrite(&end, "[{d}/{d}] ", .{ completed_items, eti }); + self.bufWrite(&end, "[{d}/{d}] ", .{ current_item, eti }); need_ellipse = false; } else if (completed_items != 0) { if (need_ellipse) self.bufWrite(&end, " ", .{}); - self.bufWrite(&end, "[{d}] ", .{completed_items}); + self.bufWrite(&end, "[{d}] ", .{current_item}); need_ellipse = false; } } diff --git a/lib/std/special/test_runner.zig b/lib/std/special/test_runner.zig index fb00a9dc30..201a5ccd90 100644 --- a/lib/std/special/test_runner.zig +++ b/lib/std/special/test_runner.zig @@ -82,18 +82,18 @@ pub fn main() void { } else |err| switch (err) { error.SkipZigTest => { skip_count += 1; - test_node.end(); progress.log("{s}... SKIP\n", .{test_fn.name}); if (!have_tty) std.debug.print("SKIP\n", .{}); + test_node.end(); }, else => { fail_count += 1; - test_node.end(); progress.log("{s}... FAIL ({s})\n", .{ test_fn.name, @errorName(err) }); if (!have_tty) std.debug.print("FAIL ({s})\n", .{@errorName(err)}); if (@errorReturnTrace()) |trace| { std.debug.dumpStackTrace(trace.*); } + test_node.end(); }, } }