| ... | @@ -12,7 +12,7 @@ pub const std_options: std.Options = .{ | ... | @@ -12,7 +12,7 @@ pub const std_options: std.Options = .{ |
| 12 | }; | 12 | }; |
| 13 | | 13 | |
| 14 | var log_err_count: usize = 0; | 14 | var log_err_count: usize = 0; |
| 15 | var fba = std.heap.FixedBufferAllocator.init(&fba_buffer); | 15 | var fba: std.heap.FixedBufferAllocator = .init(&fba_buffer); |
| 16 | var fba_buffer: [8192]u8 = undefined; | 16 | var fba_buffer: [8192]u8 = undefined; |
| 17 | var stdin_buffer: [4096]u8 = undefined; | 17 | var stdin_buffer: [4096]u8 = undefined; |
| 18 | var stdout_buffer: [4096]u8 = undefined; | 18 | var stdout_buffer: [4096]u8 = undefined; |
| ... | @@ -129,6 +129,7 @@ fn mainServer() !void { | ... | @@ -129,6 +129,7 @@ fn mainServer() !void { |
| 129 | | 129 | |
| 130 | .run_test => { | 130 | .run_test => { |
| 131 | testing.allocator_instance = .{}; | 131 | testing.allocator_instance = .{}; |
| | 132 | testing.io_instance = .init(fba.allocator()); |
| 132 | log_err_count = 0; | 133 | log_err_count = 0; |
| 133 | const index = try server.receiveBody_u32(); | 134 | const index = try server.receiveBody_u32(); |
| 134 | const test_fn = builtin.test_functions[index]; | 135 | const test_fn = builtin.test_functions[index]; |
| ... | @@ -144,6 +145,8 @@ fn mainServer() !void { | ... | @@ -144,6 +145,8 @@ fn mainServer() !void { |
| 144 | } | 145 | } |
| 145 | }, | 146 | }, |
| 146 | }; | 147 | }; |
| | 148 | testing.io_instance.deinit(); |
| | 149 | fba.reset(); |
| 147 | const leak = testing.allocator_instance.deinit() == .leak; | 150 | const leak = testing.allocator_instance.deinit() == .leak; |
| 148 | try server.serveTestResults(.{ | 151 | try server.serveTestResults(.{ |
| 149 | .index = index, | 152 | .index = index, |
| ... | @@ -217,18 +220,13 @@ fn mainTerminal() void { | ... | @@ -217,18 +220,13 @@ fn mainTerminal() void { |
| 217 | }); | 220 | }); |
| 218 | const have_tty = std.fs.File.stderr().isTty(); | 221 | const have_tty = std.fs.File.stderr().isTty(); |
| 219 | | 222 | |
| 220 | var async_frame_buffer: []align(builtin.target.stackAlignment()) u8 = undefined; | | |
| 221 | // TODO this is on the next line (using `undefined` above) because otherwise zig incorrectly | | |
| 222 | // ignores the alignment of the slice. | | |
| 223 | async_frame_buffer = &[_]u8{}; | | |
| 224 | | | |
| 225 | var leaks: usize = 0; | 223 | var leaks: usize = 0; |
| 226 | for (test_fn_list, 0..) |test_fn, i| { | 224 | for (test_fn_list, 0..) |test_fn, i| { |
| 227 | testing.allocator_instance = .{}; | 225 | testing.allocator_instance = .{}; |
| | 226 | testing.io_instance = .init(fba.allocator()); |
| 228 | defer { | 227 | defer { |
| 229 | if (testing.allocator_instance.deinit() == .leak) { | 228 | if (testing.allocator_instance.deinit() == .leak) leaks += 1; |
| 230 | leaks += 1; | 229 | testing.io_instance.deinit(); |
| 231 | } | | |
| 232 | } | 230 | } |
| 233 | testing.log_level = .warn; | 231 | testing.log_level = .warn; |
| 234 | | 232 | |