diff options
Diffstat (limited to 'build.zig')
-rw-r--r-- | build.zig | 27 |
1 files changed, 19 insertions, 8 deletions
diff --git a/build.zig b/build.zig index 7609463..0ac29d5 100644 --- a/build.zig +++ b/build.zig @@ -1,7 +1,9 @@ //! Build recipe +const Build = std.Build; +const getExternalExecutor = std.zig.system.NativeTargetInfo.getExternalExecutor; const std = @import("std"); -pub fn build(b: *std.Build) void { +pub fn build(b: *Build) !void { const target = b.standardTargetOptions(.{}); const optimize = b.standardOptimizeOption(.{}); @@ -35,13 +37,22 @@ pub fn build(b: *std.Build) void { run_cmd.addArgs(args); b.step("run", "Run the app").dependOn(&run_cmd.step); - const unit_tests = b.addTest(.{ - .root_source_file = .{ .path = "src/main.zig" }, - .target = target, + const tests = b.addTest(.{ + .root_source_file = .{ .path = "src/test.zig" }, .optimize = optimize, + .test_runner = "src/test.zig", }); - - const run_unit_tests = b.addRunArtifact(unit_tests); - const test_step = b.step("test", "Run unit tests"); - test_step.dependOn(&run_unit_tests.step); + const run_tests = b.addRunArtifact(tests); + run_tests.addArg("-b"); + run_tests.addArtifactArg(bin); + run_tests.addArgs(&.{ "-z", b.zig_exe }); + run_tests.addArgs(&.{ "-t", try target.zigTriple(b.allocator) }); + switch (getExternalExecutor(tests.target_info, bin.target_info, .{})) { + .qemu => |emulator| run_tests.addArgs(&.{ "-e", emulator }), + else => {}, + } + if (b.args) |args| + run_tests.addArgs(args); + run_tests.has_side_effects = true; + b.step("test", "Run unit tests").dependOn(&run_tests.step); } |