aboutsummaryrefslogtreecommitdiff
path: root/lib/std/testing.zig
diff options
context:
space:
mode:
authorAndrew Kelley <andrew@ziglang.org>2025-12-12 19:04:35 -0800
committerAndrew Kelley <andrew@ziglang.org>2025-12-23 22:15:09 -0800
commit1925e0319f1337b4856bd5a181bf4f6d3ac7d428 (patch)
treeb38839cca2604368b01b4312119083a5cdf3d224 /lib/std/testing.zig
parentec56696503e702e063af8740a77376b2e7694c29 (diff)
downloadzig-1925e0319f1337b4856bd5a181bf4f6d3ac7d428.tar.gz
zig-1925e0319f1337b4856bd5a181bf4f6d3ac7d428.zip
update lockStderrWriter sites
use the application's Io implementation where possible. This correctly makes writing to stderr cancelable, fallible, and participate in the application's event loop. It also removes one more hard-coded dependency on a secondary Io implementation.
Diffstat (limited to 'lib/std/testing.zig')
-rw-r--r--lib/std/testing.zig16
1 files changed, 12 insertions, 4 deletions
diff --git a/lib/std/testing.zig b/lib/std/testing.zig
index 092b65d71a..64ea3d1a4d 100644
--- a/lib/std/testing.zig
+++ b/lib/std/testing.zig
@@ -368,13 +368,21 @@ pub fn expectEqualSlices(comptime T: type, expected: []const T, actual: []const
break :diff_index if (expected.len == actual.len) return else shortest;
};
if (!backend_can_print) return error.TestExpectedEqual;
- const stderr = std.debug.lockStderrWriter(&.{});
- defer std.debug.unlockStderrWriter();
- failEqualSlices(T, expected, actual, diff_index, &stderr.interface, stderr.mode) catch {};
+ if (io.lockStderrWriter(&.{})) |stderr| {
+ defer io.unlockStderrWriter();
+ failEqualSlices(T, expected, actual, diff_index, &stderr.interface, stderr.mode) catch {};
+ } else |_| {}
return error.TestExpectedEqual;
}
-fn failEqualSlices(comptime T: type, expected: []const T, actual: []const T, diff_index: usize, w: *Io.Writer, fwm: Io.File.Writer.Mode) !void {
+fn failEqualSlices(
+ comptime T: type,
+ expected: []const T,
+ actual: []const T,
+ diff_index: usize,
+ w: *Io.Writer,
+ fwm: Io.File.Writer.Mode,
+) !void {
try w.print("slices differ. first difference occurs at index {d} (0x{X})\n", .{ diff_index, diff_index });
// TODO: Should this be configurable by the caller?