mirror of
https://github.com/ziglang/zig.git
synced 2025-12-06 06:13:07 +00:00
The previous logic here was trying to assume that custom test runners never used `std.zig.Server` to communicate with the build runner; however, it was flawed, because modifying the `test_runner` field on `Step.Compile` would not update this flag. That might have been intentional (allowing a way for the user to specify a custom test runner which *does* use the compiler server protocol), but if so, it was a flawed API, since it was too easy to update one field without updating the other. Instead, bundle these two pieces of state into a new type `std.Build.Step.Compile.TestRunner`. When passing a custom test runner, you are now *provided* to specify whether it is a "simple" runner, or whether it uses the compiler server protocol. This is a breaking change, but is unlikely to affect many people, since custom test runners are seldom used in the wild.
26 lines
790 B
Zig
26 lines
790 B
Zig
const std = @import("std");
|
|
|
|
pub fn build(b: *std.Build) void {
|
|
const test_mod = b.createModule(.{
|
|
.root_source_file = b.path("src/main.zig"),
|
|
.target = b.graph.host,
|
|
});
|
|
const module1 = b.createModule(.{ .root_source_file = b.path("module1/main.zig") });
|
|
const module2 = b.createModule(.{ .root_source_file = b.path("module2/main.zig") });
|
|
|
|
module2.addImport("module1", module1);
|
|
test_mod.addImport("module2", module2);
|
|
|
|
const t = b.addTest(.{
|
|
.root_module = test_mod,
|
|
.test_runner = .{
|
|
.path = b.path("test_runner/main.zig"),
|
|
.mode = .simple,
|
|
},
|
|
});
|
|
|
|
const test_step = b.step("test", "Run unit tests");
|
|
test_step.dependOn(&b.addRunArtifact(t).step);
|
|
b.default_step = test_step;
|
|
}
|