authorgravatar for sebastiankeller@fastmail.netSebsatian Keller <sebastiankeller@fastmail.net> 2022-02-13 14:19:33+01:00
committergravatar for noreply@github.comGitHub <noreply@github.com> 2022-02-13 15:19:33+02:00
logf22443bb05a6be6c3ade08254f52fdd05eeb2910
tree56b847d89439c66bc3e116e8a465658a83b5815f
parentf516e2c5b1d0e073d9ab4cd417aeb21f6cdf4a99
signaturebadge-question-mark Signed by PGP key 4AEE18F83AFDEB23

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]

2 files changed, 5 insertions(+), 4 deletions(-)

lib/std/Progress.zig+3-2
...@@ -261,6 +261,7 @@ fn refreshWithHeldLock(self: *Progress) void {...@@ -261,6 +261,7 @@ fn refreshWithHeldLock(self: *Progress) void {
261 need_ellipse = false;261 need_ellipse = false;
262 const eti = @atomicLoad(usize, &node.unprotected_estimated_total_items, .Monotonic);262 const eti = @atomicLoad(usize, &node.unprotected_estimated_total_items, .Monotonic);
263 const completed_items = @atomicLoad(usize, &node.unprotected_completed_items, .Monotonic);263 const completed_items = @atomicLoad(usize, &node.unprotected_completed_items, .Monotonic);
264 const current_item = completed_items + 1;
264 if (node.name.len != 0 or eti > 0) {265 if (node.name.len != 0 or eti > 0) {
265 if (node.name.len != 0) {266 if (node.name.len != 0) {
266 self.bufWrite(&end, "{s}", .{node.name});267 self.bufWrite(&end, "{s}", .{node.name});
...@@ -268,11 +269,11 @@ fn refreshWithHeldLock(self: *Progress) void {...@@ -268,11 +269,11 @@ fn refreshWithHeldLock(self: *Progress) void {
268 }269 }
269 if (eti > 0) {270 if (eti > 0) {
270 if (need_ellipse) self.bufWrite(&end, " ", .{});271 if (need_ellipse) self.bufWrite(&end, " ", .{});
271 self.bufWrite(&end, "[{d}/{d}] ", .{ completed_items, eti });272 self.bufWrite(&end, "[{d}/{d}] ", .{ current_item, eti });
272 need_ellipse = false;273 need_ellipse = false;
273 } else if (completed_items != 0) {274 } else if (completed_items != 0) {
274 if (need_ellipse) self.bufWrite(&end, " ", .{});275 if (need_ellipse) self.bufWrite(&end, " ", .{});
275 self.bufWrite(&end, "[{d}] ", .{completed_items});276 self.bufWrite(&end, "[{d}] ", .{current_item});
276 need_ellipse = false;277 need_ellipse = false;
277 }278 }
278 }279 }
lib/std/special/test_runner.zig+2-2
...@@ -82,18 +82,18 @@ pub fn main() void {...@@ -82,18 +82,18 @@ pub fn main() void {
82 } else |err| switch (err) {82 } else |err| switch (err) {
83 error.SkipZigTest => {83 error.SkipZigTest => {
84 skip_count += 1;84 skip_count += 1;
85 test_node.end();
86 progress.log("{s}... SKIP\n", .{test_fn.name});85 progress.log("{s}... SKIP\n", .{test_fn.name});
87 if (!have_tty) std.debug.print("SKIP\n", .{});86 if (!have_tty) std.debug.print("SKIP\n", .{});
87 test_node.end();
88 },88 },
89 else => {89 else => {
90 fail_count += 1;90 fail_count += 1;
91 test_node.end();
92 progress.log("{s}... FAIL ({s})\n", .{ test_fn.name, @errorName(err) });91 progress.log("{s}... FAIL ({s})\n", .{ test_fn.name, @errorName(err) });
93 if (!have_tty) std.debug.print("FAIL ({s})\n", .{@errorName(err)});92 if (!have_tty) std.debug.print("FAIL ({s})\n", .{@errorName(err)});
94 if (@errorReturnTrace()) |trace| {93 if (@errorReturnTrace()) |trace| {
95 std.debug.dumpStackTrace(trace.*);94 std.debug.dumpStackTrace(trace.*);
96 }95 }
96 test_node.end();
97 },97 },
98 }98 }
99 }99 }