master
1pub fn build(b: *Build) void {
2 const exe = b.addExecutable(.{
3 .name = "check_file_exists",
4 .root_module = b.createModule(.{
5 .target = b.graph.host,
6 .optimize = .Debug,
7 .root_source_file = b.path("check_file_exists.zig"),
8 }),
9 });
10
11 const test_step = b.step("test", "Test it");
12 b.default_step = test_step;
13
14 test_step.dependOn(addCheck(b, exe, ".", null));
15 test_step.dependOn(addCheck(b, exe, "..", b.path("..")));
16 test_step.dependOn(addCheck(b, exe, "exe dir", exe.getEmittedBin().dirname()));
17 test_step.dependOn(addCheck(b, exe, "exe dir/..", exe.getEmittedBin().dirname().dirname()));
18 test_step.dependOn(addCheck(b, exe, "./empty_dir", b.path("empty_dir")));
19}
20
21fn addCheck(b: *Build, exe: *Build.Step.Compile, cwd_name: []const u8, opt_cwd: ?Build.LazyPath) *Build.Step {
22 const run = b.addRunArtifact(exe);
23 if (opt_cwd) |cwd| run.setCwd(cwd);
24 run.addFileArg(b.path("file_that_exists.txt"));
25 run.setName(b.fmt("check in '{s}'", .{cwd_name}));
26 run.expectExitCode(0);
27 return &run.step;
28}
29
30const Build = @import("std").Build;