aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorManlio Perillo <manlio.perillo@gmail.com>2023-05-06 11:50:42 +0200
committerManlio Perillo <manlio.perillo@gmail.com>2023-05-06 11:50:42 +0200
commitbe43e2d010b65e0fb16f96cde3161d38fe535c31 (patch)
tree36c91c3a450c0076c4ff8e948f68af8c0dd0bc95
parent1c73ad29a7c76ffd937911906d5367e4a78fb161 (diff)
build: make `Exercise.hint` optional
Use an optional type, instead of an empty string, since it is more idiomatic.
-rw-r--r--build.zig16
-rw-r--r--test/tests.zig2
2 files changed, 6 insertions, 12 deletions
diff --git a/build.zig b/build.zig
index a880450..3ea34ab 100644
--- a/build.zig
+++ b/build.zig
@@ -25,7 +25,7 @@ pub const Exercise = struct {
output: []const u8,
/// This is an optional hint to give if the program does not succeed.
- hint: []const u8 = "",
+ hint: ?[]const u8 = null,
/// By default, we verify output against stderr.
/// Set this to true to check stdout instead.
@@ -254,22 +254,16 @@ const ZiglingStep = struct {
}
const exe_path = self.compile(prog_node) catch {
- if (self.exercise.hint.len > 0) {
- print("\n{s}HINT: {s}{s}", .{
- bold_text, self.exercise.hint, reset_text,
- });
- }
+ if (self.exercise.hint) |hint|
+ print("\n{s}HINT: {s}{s}", .{ bold_text, hint, reset_text });
self.help();
std.os.exit(1);
};
self.run(exe_path, prog_node) catch {
- if (self.exercise.hint.len > 0) {
- print("\n{s}HINT: {s}{s}", .{
- bold_text, self.exercise.hint, reset_text,
- });
- }
+ if (self.exercise.hint) |hint|
+ print("\n{s}HINT: {s}{s}", .{ bold_text, hint, reset_text });
self.help();
std.os.exit(1);
diff --git a/test/tests.zig b/test/tests.zig
index 0fd3286..e00ece9 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" });
cmd.setName("zig build -Dn=1");
cmd.expectExitCode(1);
- expectStdErrMatch(cmd, exercises[0].hint);
+ expectStdErrMatch(cmd, exercises[0].hint orelse "");
cmd.step.dependOn(case_step);