commit dc44baf763f38ba3735d45fc4f633cac13949b0e (tree)
parent 839a93a101804bb41cb519a965dc62e3eb7deed0
Author: Robin Voetter <robin@voetter.nl>
Date: Sun, 8 Oct 2023 17:02:59 +0200
std.testing: allow print() at comptime
This allows functions like expectEqual to be performed at comptime. If
an error is detected, the result is logged via a compile error.
Diffstat:
1 file changed, 7 insertions(+), 3 deletions(-)
diff --git a/lib/std/testing.zig b/lib/std/testing.zig
@@ -22,10 +22,14 @@ pub var base_allocator_instance = std.heap.FixedBufferAllocator.init("");
pub var log_level = std.log.Level.warn;
fn print(comptime fmt: []const u8, args: anytype) void {
- // Disable printing in tests for simple backends.
- if (builtin.zig_backend == .stage2_spirv64) return;
+ if (@inComptime()) {
+ @compileError(std.fmt.comptimePrint(fmt, args));
+ } else {
+ // Disable printing in tests for simple backends.
+ if (builtin.zig_backend == .stage2_spirv64) return;
- std.debug.print(fmt, args);
+ std.debug.print(fmt, args);
+ }
}
/// This function is intended to be used only in tests. It prints diagnostics to stderr