| ... | @@ -132,16 +132,45 @@ pub fn log( | ... | @@ -132,16 +132,45 @@ pub fn log( |
| 132 | } | 132 | } |
| 133 | | 133 | |
| 134 | pub fn main2() anyerror!void { | 134 | pub fn main2() anyerror!void { |
| 135 | var bad = false; | 135 | var skipped: usize = 0; |
| | 136 | var failed: usize = 0; |
| 136 | // Simpler main(), exercising fewer language features, so that stage2 can handle it. | 137 | // Simpler main(), exercising fewer language features, so that stage2 can handle it. |
| 137 | for (builtin.test_functions) |test_fn| { | 138 | for (builtin.test_functions) |test_fn| { |
| 138 | test_fn.func() catch |err| { | 139 | test_fn.func() catch |err| { |
| 139 | if (err != error.SkipZigTest) { | 140 | if (err != error.SkipZigTest) { |
| 140 | bad = true; | 141 | failed += 1; |
| | 142 | } else { |
| | 143 | skipped += 1; |
| 141 | } | 144 | } |
| 142 | }; | 145 | }; |
| 143 | } | 146 | } |
| 144 | if (bad) { | 147 | if (builtin.zig_backend == .stage2_llvm) { |
| | 148 | const passed = builtin.test_functions.len - skipped - failed; |
| | 149 | const stderr = std.io.getStdErr(); |
| | 150 | writeInt(stderr, passed) catch {}; |
| | 151 | stderr.writeAll(" passed; ") catch {}; |
| | 152 | writeInt(stderr, skipped) catch {}; |
| | 153 | stderr.writeAll(" skipped; ") catch {}; |
| | 154 | writeInt(stderr, failed) catch {}; |
| | 155 | stderr.writeAll(" failed.\n") catch {}; |
| | 156 | } |
| | 157 | if (failed != 0) { |
| 145 | return error.TestsFailed; | 158 | return error.TestsFailed; |
| 146 | } | 159 | } |
| 147 | } | 160 | } |
| | 161 | |
| | 162 | fn writeInt(stderr: std.fs.File, int: usize) anyerror!void { |
| | 163 | const base = 10; |
| | 164 | var buf: [100]u8 = undefined; |
| | 165 | var a: usize = int; |
| | 166 | var index: usize = buf.len; |
| | 167 | while (true) { |
| | 168 | const digit = a % base; |
| | 169 | index -= 1; |
| | 170 | buf[index] = std.fmt.digitToChar(@intCast(u8, digit), .lower); |
| | 171 | a /= base; |
| | 172 | if (a == 0) break; |
| | 173 | } |
| | 174 | const slice = buf[index..]; |
| | 175 | try stderr.writeAll(slice); |
| | 176 | } |