From e4c1598ac8dd984a480fad41e61cc60c41448cac Mon Sep 17 00:00:00 2001 From: Jacob Young Date: Sat, 19 Sep 2026 05:15:45 -0400 Subject: [PATCH] runner: implement error checks --- test/incremental2/bad_import | 48 ++++++++++++++++++++++++++++++++++++ test/src/runner.zig | 11 ++++++--- 2 files changed, 56 insertions(+), 3 deletions(-) create mode 100644 test/incremental2/bad_import diff --git a/test/incremental2/bad_import b/test/incremental2/bad_import new file mode 100644 index 0000000000000000000000000000000000000000..d93a9ed6309f963c310a82f0813d0905a564cc10 --- /dev/null +++ b/test/incremental2/bad_import @@ -0,0 +1,48 @@ +#exe { +-Mroot=main.zig +#} + +#write main.zig { +pub fn main() !void { + _ = @import("foo.zig"); + try std.Io.File.stdout().writeStreamingAll(io, "success\n"); +} +const std = @import("std"); +const io = std.Io.Threaded.global_single_threaded.io(); +#} +#write foo.zig { +comptime { + _ = @import("bad.zig"); +} +#} +#update +#check errors { +bad.zig:1:1: error: unable to load "bad.zig": FileNotFound +foo.zig:2:17: note: file imported here +#} + +#write foo.zig { +comptime { + _ = @import("this_is/not_real.zig"); +} +#} +#update { +change bad import#} +#check errors { +this_is/not_real.zig:1:1: error: unable to load "not_real.zig": FileNotFound +foo.zig:2:17: note: file imported here +#} + +#write main.zig { +pub fn main() !void { + //_ = @import("foo.zig"); + try std.Io.File.stdout().writeStreamingAll(io, "success\n"); +} +const std = @import("std"); +const io = std.Io.Threaded.global_single_threaded.io(); +#} +#update { +remove import of 'foo.zig'#} +#check stdout { +success +#} diff --git a/test/src/runner.zig b/test/src/runner.zig index 9b652ee72607e48512fe2accce29d3127a6defc1..e4d7e9971fc965bb4724bcdec971a5c1ed754156 100644 --- a/test/src/runner.zig +++ b/test/src/runner.zig @@ -749,9 +749,14 @@ fn runTest( stderr.tossBuffered(); } switch (check) { - .errors => if (error_bundle.errorMessageCount() != 0) { - @panic("TODO"); - } else fatal("expected compile errors", .{}), + .errors => { + var error_aw: std.Io.Writer.Allocating = .init(gpa); + defer error_aw.deinit(); + try error_bundle.renderToWriter(.{ + .include_source_line = false, + }, &error_aw.writer); + try std.testing.expectEqualStrings(expected, error_aw.written()); + }, .stdout, .exit, .lldb => if (error_bundle.errorMessageCount() != 0) { try error_bundle.renderToStderr(io, .{}, .auto); fatal("unexpected compile errors", .{}); -- 2.54.0