diff --git a/test/runner.zig b/test/runner.zig index dcfa7f4a..23c1120d 100644 --- a/test/runner.zig +++ b/test/runner.zig @@ -168,7 +168,6 @@ fn mainServer() !void { }, }; if(!is_fuzz_test) @panic("missed call to std.testing.fuzz"); - if(log_err_count != 0) @panic("error logs detected"); }, else => { @@ -190,7 +189,11 @@ fn mainTerminal() void { .root_name = "Test", .estimated_total_items = test_fn_list.len, }); - const have_tty = std.io.getStdErr().isTty(); + const doColors = std.io.getStdErr().supportsAnsiEscapeCodes(); + const reset = if(doColors) "\x1b[0m" else ""; + const red = if(doColors) "\x1b[31m" else ""; + const yellow = if(doColors) "\x1b[33m" else ""; + const green = if(doColors) "\x1b[32m" else ""; var async_frame_buffer: []align(builtin.target.stackAlignment()) u8 = undefined; // TODO this is on the next line (using `undefined` above) because otherwise zig incorrectly @@ -208,33 +211,22 @@ fn mainTerminal() void { testing.log_level = .warn; const test_node = root_node.start(test_fn.name, 0); - if(!have_tty) { - std.debug.print("{d}/{d} {s}...", .{i + 1, test_fn_list.len, test_fn.name}); - } + + std.debug.print("{d: >4}/{d: <4} {s:.<65}", .{i + 1, test_fn_list.len, test_fn.name}); is_fuzz_test = false; if(test_fn.func()) |_| { ok_count += 1; test_node.end(); - if(!have_tty) std.debug.print("OK\n", .{}); + std.debug.print("{s}OK{s}\n", .{green, reset}); } else |err| switch(err) { error.SkipZigTest => { skip_count += 1; - if(have_tty) { - std.debug.print("{d}/{d} {s}...SKIP\n", .{i + 1, test_fn_list.len, test_fn.name}); - } else { - std.debug.print("SKIP\n", .{}); - } + std.debug.print("{s}SKIP{s}\n", .{yellow, reset}); test_node.end(); }, else => { fail_count += 1; - if(have_tty) { - std.debug.print("{d}/{d} {s}...FAIL ({s})\n", .{ - i + 1, test_fn_list.len, test_fn.name, @errorName(err), - }); - } else { - std.debug.print("FAIL ({s})\n", .{@errorName(err)}); - } + std.debug.print("{s}FAIL{s}\n{s}:\n", .{red, reset, @errorName(err)}); if(@errorReturnTrace()) |trace| { std.debug.dumpStackTrace(trace.*); } @@ -258,7 +250,7 @@ fn mainTerminal() void { if(fuzz_count != 0) { std.debug.print("{d} fuzz tests found.\n", .{fuzz_count}); } - if(leaks != 0 or log_err_count != 0 or fail_count != 0) { + if(leaks != 0 or fail_count != 0) { std.process.exit(1); } }