summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--build.zig40
-rw-r--r--test/tests.zig5
2 files changed, 23 insertions, 22 deletions
diff --git a/build.zig b/build.zig
index 582350d..c762457 100644
--- a/build.zig
+++ b/build.zig
@@ -74,9 +74,22 @@ pub const Exercise = struct {
}
};
+pub const logo =
+ \\ _ _ _
+ \\ ___(_) __ _| (_)_ __ __ _ ___
+ \\ |_ | |/ _' | | | '_ \ / _' / __|
+ \\ / /| | (_| | | | | | | (_| \__ \
+ \\ /___|_|\__, |_|_|_| |_|\__, |___/
+ \\ |___/ |___/
+ \\
+ \\ "Look out! Broken programs below!"
+ \\
+ \\
+;
+
pub fn build(b: *Build) !void {
if (!compat.is_compatible) compat.die();
- if (!validate_exercises()) std.os.exit(1);
+ if (!validate_exercises()) std.os.exit(2);
use_color_escapes = false;
if (std.io.getStdErr().supportsAnsiEscapeCodes()) {
@@ -106,19 +119,6 @@ pub fn build(b: *Build) !void {
reset_text = "\x1b[0m";
}
- const logo =
- \\ _ _ _
- \\ ___(_) __ _| (_)_ __ __ _ ___
- \\ |_ | |/ _' | | | '_ \ / _' / __|
- \\ / /| | (_| | | | | | | (_| \__ \
- \\ /___|_|\__, |_|_|_| |_|\__, |___/
- \\ |___/ |___/
- \\
- \\ "Look out! Broken programs below!"
- \\
- \\
- ;
-
const healed = b.option(bool, "healed", "Run exercises from patches/healed") orelse
false;
const override_healed_path = b.option([]const u8, "healed-path", "Override healed path");
@@ -136,7 +136,7 @@ pub fn build(b: *Build) !void {
if (exno) |n| {
if (n == 0 or n > exercises.len - 1) {
print("unknown exercise number: {}\n", .{n});
- std.os.exit(1);
+ std.os.exit(2);
}
const ex = exercises[n - 1];
@@ -280,10 +280,10 @@ const ZiglingStep = struct {
self.help();
- // NOTE: Returning 0 'success' status because the *exercise* failed,
- // but Ziglings did not. Otherwise the learner will see this message:
- // "error: the following build command failed with exit code 1:..."
- std.os.exit(0);
+ // NOTE: Using exit code 2 will prevent the Zig compiler to print
+ // the message:
+ // "error: the following build command failed with exit code 1:..."
+ std.os.exit(2);
};
self.run(exe_path, prog_node) catch {
@@ -293,7 +293,7 @@ const ZiglingStep = struct {
self.help();
// NOTE: See note above!
- std.os.exit(0);
+ std.os.exit(2);
};
}
diff --git a/test/tests.zig b/test/tests.zig
index 2fd5ec4..6eab08e 100644
--- a/test/tests.zig
+++ b/test/tests.zig
@@ -175,7 +175,7 @@ pub fn addCliTests(b: *std.Build, exercises: []const Exercise) *Step {
const cmd = b.addSystemCommand(&.{ b.zig_exe, "build", "-Dn=1" });
const expect = exercises[0].hint orelse "";
cmd.setName("zig build -Dn=1");
- cmd.expectExitCode(1);
+ cmd.expectExitCode(2);
cmd.addCheck(.{ .expect_stderr_match = expect });
cmd.step.dependOn(case_step);
@@ -282,10 +282,11 @@ const CheckStep = struct {
for (exercises) |ex| {
if (ex.number() == 1 and self.has_logo) {
// Skip the logo.
+ const nlines = mem.count(u8, root.logo, "\n");
var buf: [80]u8 = undefined;
var lineno: usize = 0;
- while (lineno < 8) : (lineno += 1) {
+ while (lineno < nlines) : (lineno += 1) {
_ = try readLine(stderr, &buf);
}
}