aboutsummaryrefslogtreecommitdiff
path: root/src/cli.zig
diff options
context:
space:
mode:
Diffstat (limited to 'src/cli.zig')
-rw-r--r--src/cli.zig19
1 files changed, 18 insertions, 1 deletions
diff --git a/src/cli.zig b/src/cli.zig
index 3d0fb5b37..f0cc47918 100644
--- a/src/cli.zig
+++ b/src/cli.zig
@@ -217,6 +217,7 @@ pub const Arguments = struct {
clap.parseParam("--rerun-each <NUMBER> Re-run each test file <NUMBER> times, helps catch certain bugs") catch unreachable,
clap.parseParam("--only Only run tests that are marked with \"test.only()\"") catch unreachable,
clap.parseParam("--todo Include tests that are marked with \"test.todo()\"") catch unreachable,
+ clap.parseParam("--bail <NUMBER>? Exit the test suite after <NUMBER> failures. If you do not specify a number, it defaults to 1.") catch unreachable,
};
const build_params_public = public_params ++ build_only_params;
@@ -383,7 +384,21 @@ pub const Arguments = struct {
};
}
}
- ctx.test_options.update_snapshots = args.flag("--update-snapshots");
+ if (args.option("--bail")) |bail| {
+ if (bail.len > 0) {
+ ctx.test_options.bail = std.fmt.parseInt(u32, bail, 10) catch |e| {
+ Output.prettyErrorln("--bail expects a number: {s}", .{@errorName(e)});
+ Global.exit(1);
+ };
+
+ if (ctx.test_options.bail == 0) {
+ Output.prettyErrorln("--bail expects a number greater than 0", .{});
+ Global.exit(1);
+ }
+ } else {
+ ctx.test_options.bail = 1;
+ }
+ }
if (args.option("--rerun-each")) |repeat_count| {
if (repeat_count.len > 0) {
ctx.test_options.repeat_count = std.fmt.parseInt(u32, repeat_count, 10) catch |e| {
@@ -392,6 +407,7 @@ pub const Arguments = struct {
};
}
}
+ ctx.test_options.update_snapshots = args.flag("--update-snapshots");
ctx.test_options.run_todo = args.flag("--todo");
ctx.test_options.only = args.flag("--only");
}
@@ -929,6 +945,7 @@ pub const Command = struct {
repeat_count: u32 = 0,
run_todo: bool = false,
only: bool = false,
+ bail: u32 = 0,
};
pub const Context = struct {