also looking at this
Add deterministic test sharding for distributed CI
#22
10 files
+322
-5
| @@ -24,12 +24,33 @@ test "CLI rejects missing and invalid values" { | ||
| 24 | 24 | try std.testing.expectError(ztf.cli.CLIError.InvalidArgument, invalid.parse(&.{ "zig-test", "--jobs", "0" })); |
| 25 | 25 | } |
| 26 | 26 | |
| 27 | test "CLI parses and validates one-based sharding" { | |
| 28 | var cli = ztf.CLI.init(std.testing.allocator); | |
| 29 | try cli.parse(&.{ "zig-test", "--shard-index", "2", "--shard-count", "4" }); | |
| 30 | try std.testing.expectEqual(@as(?usize, 2), cli.options.shard_index); | |
| 31 | try std.testing.expectEqual(@as(?usize, 4), cli.options.shard_count); | |
| 32 | ||
| 33 | var missing_count = ztf.CLI.init(std.testing.allocator); | |
| 34 | try std.testing.expectError( | |
| 35 | ztf.cli.CLIError.InvalidArgument, | |
| 36 | missing_count.parse(&.{ "zig-test", "--shard-index", "1" }), | |
| 37 | ); | |
| 38 | ||
| 39 | var out_of_range = ztf.CLI.init(std.testing.allocator); | |
| 40 | try std.testing.expectError( | |
| 41 | ztf.cli.CLIError.InvalidArgument, | |
| 42 | out_of_range.parse(&.{ "zig-test", "--shard-index", "3", "--shard-count", "2" }), | |
| 43 | ); | |
| 44 | } | |
| 45 | ||
| 27 | 46 | test "CLI flags override configuration defaults" { |
| 28 | 47 | var cli = ztf.CLI.init(std.testing.allocator); |
| 29 | 48 | var config = ztf.TestConfig{}; |
| 30 | 49 | config.test_options.test_dir = "configured-tests"; |
| 31 | 50 | config.test_options.filter = "configured-filter"; |
| 32 | 51 | config.test_options.recursive = false; |
| 52 | config.sharding.index = 1; | |
| 53 | config.sharding.count = 3; | |
| 33 | 54 | config.reporter.verbose = true; |
| 34 | 55 | |
| 35 | 56 | try cli.applyConfig(config); |
| @@ -39,4 +60,6 @@ test "CLI flags override configuration defaults" { | ||
| 39 | 60 | try std.testing.expectEqualStrings("cli-filter", cli.options.filter.?); |
| 40 | 61 | try std.testing.expect(cli.options.no_recursive); |
| 41 | 62 | try std.testing.expect(cli.options.verbose); |
| 63 | try std.testing.expectEqual(@as(?usize, 1), cli.options.shard_index); | |
| 64 | try std.testing.expectEqual(@as(?usize, 3), cli.options.shard_count); | |
| 42 | 65 | } |