|
|
@ -84,10 +84,11 @@ pub fn addCliTests(b: *std.Build, exercises: []const Exercise) *Step {
|
|
|
|
b.fmt("-Dn={}", .{n}),
|
|
|
|
b.fmt("-Dn={}", .{n}),
|
|
|
|
"test",
|
|
|
|
"test",
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
const expect = b.fmt("{s} skipped", .{ex.main_file});
|
|
|
|
cmd.setName(b.fmt("zig build -Dhealed -Dn={} test", .{n}));
|
|
|
|
cmd.setName(b.fmt("zig build -Dhealed -Dn={} test", .{n}));
|
|
|
|
cmd.expectExitCode(0);
|
|
|
|
cmd.expectExitCode(0);
|
|
|
|
cmd.expectStdOutEqual("");
|
|
|
|
cmd.addCheck(.{ .expect_stdout_exact = "" });
|
|
|
|
expectStdErrMatch(cmd, b.fmt("{s} skipped", .{ex.main_file}));
|
|
|
|
cmd.addCheck(.{ .expect_stderr_match = expect });
|
|
|
|
|
|
|
|
|
|
|
|
cmd.step.dependOn(&heal_step.step);
|
|
|
|
cmd.step.dependOn(&heal_step.step);
|
|
|
|
|
|
|
|
|
|
|
@ -172,9 +173,10 @@ pub fn addCliTests(b: *std.Build, exercises: []const Exercise) *Step {
|
|
|
|
const case_step = createCase(b, "case-5");
|
|
|
|
const case_step = createCase(b, "case-5");
|
|
|
|
|
|
|
|
|
|
|
|
const cmd = b.addSystemCommand(&.{ b.zig_exe, "build", "-Dn=1" });
|
|
|
|
const cmd = b.addSystemCommand(&.{ b.zig_exe, "build", "-Dn=1" });
|
|
|
|
|
|
|
|
const expect = exercises[0].hint orelse "";
|
|
|
|
cmd.setName("zig build -Dn=1");
|
|
|
|
cmd.setName("zig build -Dn=1");
|
|
|
|
cmd.expectExitCode(1);
|
|
|
|
cmd.expectExitCode(1);
|
|
|
|
expectStdErrMatch(cmd, exercises[0].hint orelse "");
|
|
|
|
cmd.addCheck(.{ .expect_stderr_match = expect });
|
|
|
|
|
|
|
|
|
|
|
|
cmd.step.dependOn(case_step);
|
|
|
|
cmd.step.dependOn(case_step);
|
|
|
|
|
|
|
|
|
|
|
@ -466,27 +468,3 @@ pub fn makeTempPath(b: *Build) ![]const u8 {
|
|
|
|
|
|
|
|
|
|
|
|
return path;
|
|
|
|
return path;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//
|
|
|
|
|
|
|
|
// Missing functions from std.Build.RunStep
|
|
|
|
|
|
|
|
//
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/// Adds a check for stderr match. Does not add any other checks.
|
|
|
|
|
|
|
|
pub fn expectStdErrMatch(self: *RunStep, bytes: []const u8) void {
|
|
|
|
|
|
|
|
const new_check: RunStep.StdIo.Check = .{
|
|
|
|
|
|
|
|
.expect_stderr_match = self.step.owner.dupe(bytes),
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
self.addCheck(new_check);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/// Adds a check for stdout match as well as a check for exit code 0, if
|
|
|
|
|
|
|
|
/// there is not already an expected termination check.
|
|
|
|
|
|
|
|
pub fn expectStdOutMatch(self: *RunStep, bytes: []const u8) void {
|
|
|
|
|
|
|
|
const new_check: RunStep.StdIo.Check = .{
|
|
|
|
|
|
|
|
.expect_stdout_match = self.step.owner.dupe(bytes),
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
self.addCheck(new_check);
|
|
|
|
|
|
|
|
if (!self.hasTermCheck()) {
|
|
|
|
|
|
|
|
self.expectExitCode(0);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|