diff options
Diffstat (limited to 'src/cli.zig')
-rw-r--r-- | src/cli.zig | 19 |
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 { |