From 77be253c9bd255becf8b86c48e08919e8f825bdc Mon Sep 17 00:00:00 2001 From: Ralf Jung Date: Fri, 22 Jul 2022 09:23:21 -0400 Subject: [PATCH] cargotest: do not run quickcheck tests in xsv --- src/tools/cargotest/main.rs | 29 ++++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/src/tools/cargotest/main.rs b/src/tools/cargotest/main.rs index 908cfc15c0d10..95fe98a683ffd 100644 --- a/src/tools/cargotest/main.rs +++ b/src/tools/cargotest/main.rs @@ -11,6 +11,8 @@ struct Test { packages: &'static [&'static str], features: Option<&'static [&'static str]>, manifest_path: Option<&'static str>, + /// `filters` are passed to libtest (i.e., after a `--` in the `cargo test` invocation). + filters: &'static [&'static str], } const TEST_REPOS: &[Test] = &[ @@ -22,6 +24,7 @@ const TEST_REPOS: &[Test] = &[ packages: &[], features: None, manifest_path: None, + filters: &[], }, Test { name: "ripgrep", @@ -31,6 +34,7 @@ const TEST_REPOS: &[Test] = &[ packages: &[], features: None, manifest_path: None, + filters: &[], }, Test { name: "tokei", @@ -40,6 +44,7 @@ const TEST_REPOS: &[Test] = &[ packages: &[], features: None, manifest_path: None, + filters: &[], }, Test { name: "xsv", @@ -49,6 +54,21 @@ const TEST_REPOS: &[Test] = &[ packages: &[], features: None, manifest_path: None, + // Many tests here use quickcheck and some of them can fail randomly, so only run deterministic tests. + filters: &[ + "test_flatten::", + "test_fmt::", + "test_headers::", + "test_index::", + "test_join::", + "test_partition::", + "test_search::", + "test_select::", + "test_slice::", + "test_split::", + "test_stats::", + "test_table::", + ], }, Test { name: "servo", @@ -60,6 +80,7 @@ const TEST_REPOS: &[Test] = &[ packages: &["selectors"], features: None, manifest_path: None, + filters: &[], }, Test { name: "diesel", @@ -75,6 +96,7 @@ const TEST_REPOS: &[Test] = &[ // not any other crate present in the diesel workspace // (This is required to set the feature flags above) manifest_path: Some("diesel/Cargo.toml"), + filters: &[], }, ]; @@ -97,7 +119,8 @@ fn test_repo(cargo: &Path, out_dir: &Path, test: &Test) { if let Some(lockfile) = test.lock { fs::write(&dir.join("Cargo.lock"), lockfile).unwrap(); } - if !run_cargo_test(cargo, &dir, test.packages, test.features, test.manifest_path) { + if !run_cargo_test(cargo, &dir, test.packages, test.features, test.manifest_path, test.filters) + { panic!("tests failed for {}", test.repo); } } @@ -155,6 +178,7 @@ fn run_cargo_test( packages: &[&str], features: Option<&[&str]>, manifest_path: Option<&str>, + filters: &[&str], ) -> bool { let mut command = Command::new(cargo_path); command.arg("test"); @@ -174,6 +198,9 @@ fn run_cargo_test( command.arg("-p").arg(name); } + command.arg("--"); + command.args(filters); + let status = command // Disable rust-lang/cargo's cross-compile tests .env("CFG_DISABLE_CROSS_TESTS", "1")