summary refs log tree commit diff
path: root/build.zig
diff options
context:
space:
mode:
Diffstat (limited to 'build.zig')
-rw-r--r--build.zig27
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);
 }