From be43e2d010b65e0fb16f96cde3161d38fe535c31 Mon Sep 17 00:00:00 2001 From: Manlio Perillo Date: Sat, 6 May 2023 11:50:42 +0200 Subject: [PATCH] build: make `Exercise.hint` optional Use an optional type, instead of an empty string, since it is more idiomatic. --- build.zig | 16 +++++----------- test/tests.zig | 2 +- 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);