diff options
Diffstat (limited to 'lib/std')
| -rw-r--r-- | lib/std/special/test_runner.zig | 10 | ||||
| -rw-r--r-- | lib/std/start.zig | 5 |
2 files changed, 14 insertions, 1 deletions
diff --git a/lib/std/special/test_runner.zig b/lib/std/special/test_runner.zig index c7375303e9..b762e7784e 100644 --- a/lib/std/special/test_runner.zig +++ b/lib/std/special/test_runner.zig @@ -123,8 +123,16 @@ pub fn log( } pub fn main2() anyerror!void { + var bad = false; // Simpler main(), exercising fewer language features, so that stage2 can handle it. for (builtin.test_functions) |test_fn| { - try test_fn.func(); + test_fn.func() catch |err| { + if (err != error.SkipZigTest) { + bad = true; + } + }; + } + if (bad) { + return error.TestsFailed; } } diff --git a/lib/std/start.zig b/lib/std/start.zig index d8e5796d37..057fde62f6 100644 --- a/lib/std/start.zig +++ b/lib/std/start.zig @@ -87,6 +87,11 @@ fn main2() callconv(.C) c_int { } fn _start2() callconv(.Naked) noreturn { + callMain2(); +} + +fn callMain2() noreturn { + @setAlignStack(16); root.main(); exit2(0); } |
