@@ -11,6 +11,8 @@ struct Test {
1111 packages : & ' static [ & ' static str ] ,
1212 features : Option < & ' static [ & ' static str ] > ,
1313 manifest_path : Option < & ' static str > ,
14+ /// `filters` are passed to libtest (i.e., after a `--` in the `cargo test` invocation).
15+ filters : & ' static [ & ' static str ] ,
1416}
1517
1618const TEST_REPOS : & [ Test ] = & [
@@ -22,6 +24,7 @@ const TEST_REPOS: &[Test] = &[
2224 packages : & [ ] ,
2325 features : None ,
2426 manifest_path : None ,
27+ filters : & [ ] ,
2528 } ,
2629 Test {
2730 name : "ripgrep" ,
@@ -31,6 +34,7 @@ const TEST_REPOS: &[Test] = &[
3134 packages : & [ ] ,
3235 features : None ,
3336 manifest_path : None ,
37+ filters : & [ ] ,
3438 } ,
3539 Test {
3640 name : "tokei" ,
@@ -40,6 +44,7 @@ const TEST_REPOS: &[Test] = &[
4044 packages : & [ ] ,
4145 features : None ,
4246 manifest_path : None ,
47+ filters : & [ ] ,
4348 } ,
4449 Test {
4550 name : "xsv" ,
@@ -49,6 +54,21 @@ const TEST_REPOS: &[Test] = &[
4954 packages : & [ ] ,
5055 features : None ,
5156 manifest_path : None ,
57+ // Many tests here use quickcheck and some of them can fail randomly, so only run deterministic tests.
58+ filters : & [
59+ "test_flatten::" ,
60+ "test_fmt::" ,
61+ "test_headers::" ,
62+ "test_index::" ,
63+ "test_join::" ,
64+ "test_partition::" ,
65+ "test_search::" ,
66+ "test_select::" ,
67+ "test_slice::" ,
68+ "test_split::" ,
69+ "test_stats::" ,
70+ "test_table::" ,
71+ ] ,
5272 } ,
5373 Test {
5474 name : "servo" ,
@@ -60,6 +80,7 @@ const TEST_REPOS: &[Test] = &[
6080 packages : & [ "selectors" ] ,
6181 features : None ,
6282 manifest_path : None ,
83+ filters : & [ ] ,
6384 } ,
6485 Test {
6586 name : "diesel" ,
@@ -75,6 +96,7 @@ const TEST_REPOS: &[Test] = &[
7596 // not any other crate present in the diesel workspace
7697 // (This is required to set the feature flags above)
7798 manifest_path : Some ( "diesel/Cargo.toml" ) ,
99+ filters : & [ ] ,
78100 } ,
79101] ;
80102
@@ -97,7 +119,8 @@ fn test_repo(cargo: &Path, out_dir: &Path, test: &Test) {
97119 if let Some ( lockfile) = test. lock {
98120 fs:: write ( & dir. join ( "Cargo.lock" ) , lockfile) . unwrap ( ) ;
99121 }
100- if !run_cargo_test ( cargo, & dir, test. packages , test. features , test. manifest_path ) {
122+ if !run_cargo_test ( cargo, & dir, test. packages , test. features , test. manifest_path , test. filters )
123+ {
101124 panic ! ( "tests failed for {}" , test. repo) ;
102125 }
103126}
@@ -155,6 +178,7 @@ fn run_cargo_test(
155178 packages : & [ & str ] ,
156179 features : Option < & [ & str ] > ,
157180 manifest_path : Option < & str > ,
181+ filters : & [ & str ] ,
158182) -> bool {
159183 let mut command = Command :: new ( cargo_path) ;
160184 command. arg ( "test" ) ;
@@ -174,6 +198,9 @@ fn run_cargo_test(
174198 command. arg ( "-p" ) . arg ( name) ;
175199 }
176200
201+ command. arg ( "--" ) ;
202+ command. args ( filters) ;
203+
177204 let status = command
178205 // Disable rust-lang/cargo's cross-compile tests
179206 . env ( "CFG_DISABLE_CROSS_TESTS" , "1" )
0 commit comments