diff options
| author | Andrew Kelley <andrew@ziglang.org> | 2022-01-17 22:17:02 -0700 |
|---|---|---|
| committer | Andrew Kelley <andrew@ziglang.org> | 2022-01-17 22:17:02 -0700 |
| commit | 4938fb8f5ca9551b69036fdb644103ffc9ef49cf (patch) | |
| tree | a0a8ca5d609b0c21894504316dd669d371cb82b2 | |
| parent | 4d05f2ae5f7b79f8abb4aa07d846a46470ffdb1a (diff) | |
| download | zig-4938fb8f5ca9551b69036fdb644103ffc9ef49cf.tar.gz zig-4938fb8f5ca9551b69036fdb644103ffc9ef49cf.zip | |
test runner: stage2 llvm backend prints stats
| -rw-r--r-- | lib/std/special/test_runner.zig | 35 |
1 files changed, 32 insertions, 3 deletions
diff --git a/lib/std/special/test_runner.zig b/lib/std/special/test_runner.zig index 22edaf7bed..fe20e10141 100644 --- a/lib/std/special/test_runner.zig +++ b/lib/std/special/test_runner.zig @@ -132,16 +132,45 @@ pub fn log( } pub fn main2() anyerror!void { - var bad = false; + var skipped: usize = 0; + var failed: usize = 0; // Simpler main(), exercising fewer language features, so that stage2 can handle it. for (builtin.test_functions) |test_fn| { test_fn.func() catch |err| { if (err != error.SkipZigTest) { - bad = true; + failed += 1; + } else { + skipped += 1; } }; } - if (bad) { + if (builtin.zig_backend == .stage2_llvm) { + const passed = builtin.test_functions.len - skipped - failed; + const stderr = std.io.getStdErr(); + writeInt(stderr, passed) catch {}; + stderr.writeAll(" passed; ") catch {}; + writeInt(stderr, skipped) catch {}; + stderr.writeAll(" skipped; ") catch {}; + writeInt(stderr, failed) catch {}; + stderr.writeAll(" failed.\n") catch {}; + } + if (failed != 0) { return error.TestsFailed; } } + +fn writeInt(stderr: std.fs.File, int: usize) anyerror!void { + const base = 10; + var buf: [100]u8 = undefined; + var a: usize = int; + var index: usize = buf.len; + while (true) { + const digit = a % base; + index -= 1; + buf[index] = std.fmt.digitToChar(@intCast(u8, digit), .lower); + a /= base; + if (a == 0) break; + } + const slice = buf[index..]; + try stderr.writeAll(slice); +} |
