mirror of
https://github.com/ziglang/zig.git
synced 2025-12-06 14:23:09 +00:00
add std.testing.io
This commit is contained in:
parent
b70f12fc40
commit
8bcc91c15e
@ -120,6 +120,7 @@ fn mainServer() !void {
|
|||||||
|
|
||||||
.run_test => {
|
.run_test => {
|
||||||
testing.allocator_instance = .{};
|
testing.allocator_instance = .{};
|
||||||
|
testing.io_instance = .init(fba.allocator());
|
||||||
log_err_count = 0;
|
log_err_count = 0;
|
||||||
const index = try server.receiveBody_u32();
|
const index = try server.receiveBody_u32();
|
||||||
const test_fn = builtin.test_functions[index];
|
const test_fn = builtin.test_functions[index];
|
||||||
@ -135,6 +136,8 @@ fn mainServer() !void {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
testing.io_instance.deinit();
|
||||||
|
fba.reset();
|
||||||
const leak = testing.allocator_instance.deinit() == .leak;
|
const leak = testing.allocator_instance.deinit() == .leak;
|
||||||
try server.serveTestResults(.{
|
try server.serveTestResults(.{
|
||||||
.index = index,
|
.index = index,
|
||||||
@ -194,18 +197,14 @@ fn mainTerminal() void {
|
|||||||
});
|
});
|
||||||
const have_tty = std.fs.File.stderr().isTty();
|
const have_tty = std.fs.File.stderr().isTty();
|
||||||
|
|
||||||
var async_frame_buffer: []align(builtin.target.stackAlignment()) u8 = undefined;
|
|
||||||
// TODO this is on the next line (using `undefined` above) because otherwise zig incorrectly
|
|
||||||
// ignores the alignment of the slice.
|
|
||||||
async_frame_buffer = &[_]u8{};
|
|
||||||
|
|
||||||
var leaks: usize = 0;
|
var leaks: usize = 0;
|
||||||
for (test_fn_list, 0..) |test_fn, i| {
|
for (test_fn_list, 0..) |test_fn, i| {
|
||||||
testing.allocator_instance = .{};
|
testing.allocator_instance = .{};
|
||||||
|
testing.io_instance = .init(fba.allocator());
|
||||||
defer {
|
defer {
|
||||||
if (testing.allocator_instance.deinit() == .leak) {
|
if (testing.allocator_instance.deinit() == .leak) leaks += 1;
|
||||||
leaks += 1;
|
testing.io_instance.deinit();
|
||||||
}
|
fba.reset();
|
||||||
}
|
}
|
||||||
testing.log_level = .warn;
|
testing.log_level = .warn;
|
||||||
|
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
const std = @import("std");
|
const std = @import("std");
|
||||||
const io = std.io;
|
const Io = std.Io;
|
||||||
const DefaultPrng = std.Random.DefaultPrng;
|
const DefaultPrng = std.Random.DefaultPrng;
|
||||||
const expect = std.testing.expect;
|
const expect = std.testing.expect;
|
||||||
const expectEqual = std.testing.expectEqual;
|
const expectEqual = std.testing.expectEqual;
|
||||||
@ -24,7 +24,7 @@ test "write a file, read it, then delete it" {
|
|||||||
var file = try tmp.dir.createFile(tmp_file_name, .{});
|
var file = try tmp.dir.createFile(tmp_file_name, .{});
|
||||||
defer file.close();
|
defer file.close();
|
||||||
|
|
||||||
var buf_stream = io.bufferedWriter(file.deprecatedWriter());
|
var buf_stream = Io.bufferedWriter(file.deprecatedWriter());
|
||||||
const st = buf_stream.writer();
|
const st = buf_stream.writer();
|
||||||
try st.print("begin", .{});
|
try st.print("begin", .{});
|
||||||
try st.writeAll(data[0..]);
|
try st.writeAll(data[0..]);
|
||||||
@ -45,7 +45,7 @@ test "write a file, read it, then delete it" {
|
|||||||
const expected_file_size: u64 = "begin".len + data.len + "end".len;
|
const expected_file_size: u64 = "begin".len + data.len + "end".len;
|
||||||
try expectEqual(expected_file_size, file_size);
|
try expectEqual(expected_file_size, file_size);
|
||||||
|
|
||||||
var buf_stream = io.bufferedReader(file.deprecatedReader());
|
var buf_stream = Io.bufferedReader(file.deprecatedReader());
|
||||||
const st = buf_stream.reader();
|
const st = buf_stream.reader();
|
||||||
const contents = try st.readAllAlloc(std.testing.allocator, 2 * 1024);
|
const contents = try st.readAllAlloc(std.testing.allocator, 2 * 1024);
|
||||||
defer std.testing.allocator.free(contents);
|
defer std.testing.allocator.free(contents);
|
||||||
@ -66,7 +66,7 @@ test "BitStreams with File Stream" {
|
|||||||
var file = try tmp.dir.createFile(tmp_file_name, .{});
|
var file = try tmp.dir.createFile(tmp_file_name, .{});
|
||||||
defer file.close();
|
defer file.close();
|
||||||
|
|
||||||
var bit_stream = io.bitWriter(native_endian, file.deprecatedWriter());
|
var bit_stream = Io.bitWriter(native_endian, file.deprecatedWriter());
|
||||||
|
|
||||||
try bit_stream.writeBits(@as(u2, 1), 1);
|
try bit_stream.writeBits(@as(u2, 1), 1);
|
||||||
try bit_stream.writeBits(@as(u5, 2), 2);
|
try bit_stream.writeBits(@as(u5, 2), 2);
|
||||||
@ -80,7 +80,7 @@ test "BitStreams with File Stream" {
|
|||||||
var file = try tmp.dir.openFile(tmp_file_name, .{});
|
var file = try tmp.dir.openFile(tmp_file_name, .{});
|
||||||
defer file.close();
|
defer file.close();
|
||||||
|
|
||||||
var bit_stream = io.bitReader(native_endian, file.deprecatedReader());
|
var bit_stream = Io.bitReader(native_endian, file.deprecatedReader());
|
||||||
|
|
||||||
var out_bits: u16 = undefined;
|
var out_bits: u16 = undefined;
|
||||||
|
|
||||||
@ -170,7 +170,7 @@ test "updateTimes" {
|
|||||||
|
|
||||||
test "GenericReader methods can return error.EndOfStream" {
|
test "GenericReader methods can return error.EndOfStream" {
|
||||||
// https://github.com/ziglang/zig/issues/17733
|
// https://github.com/ziglang/zig/issues/17733
|
||||||
var fbs = std.io.fixedBufferStream("");
|
var fbs = std.Io.fixedBufferStream("");
|
||||||
try std.testing.expectError(
|
try std.testing.expectError(
|
||||||
error.EndOfStream,
|
error.EndOfStream,
|
||||||
fbs.reader().readEnum(enum(u8) { a, b }, .little),
|
fbs.reader().readEnum(enum(u8) { a, b }, .little),
|
||||||
@ -180,3 +180,14 @@ test "GenericReader methods can return error.EndOfStream" {
|
|||||||
fbs.reader().isBytes("foo"),
|
fbs.reader().isBytes("foo"),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
test "Io instance provided by unit tester async/await" {
|
||||||
|
const io = std.testing.io;
|
||||||
|
var future1 = io.async(silly, .{1});
|
||||||
|
var future2 = io.async(silly, .{2});
|
||||||
|
try std.testing.expectEqual(3, future1.await(io) + future2.await(io));
|
||||||
|
}
|
||||||
|
|
||||||
|
fn silly(n: usize) usize {
|
||||||
|
return n;
|
||||||
|
}
|
||||||
|
|||||||
@ -28,6 +28,9 @@ pub var allocator_instance: std.heap.GeneralPurposeAllocator(.{
|
|||||||
break :b .init;
|
break :b .init;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
pub var io_instance: std.Io.ThreadPool = undefined;
|
||||||
|
pub const io = io_instance.io();
|
||||||
|
|
||||||
/// TODO https://github.com/ziglang/zig/issues/5738
|
/// TODO https://github.com/ziglang/zig/issues/5738
|
||||||
pub var log_level = std.log.Level.warn;
|
pub var log_level = std.log.Level.warn;
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user