From df33ed05dd7ebd153f532bd38be2043f7b14d3be Mon Sep 17 00:00:00 2001 From: Martin Nordholts Date: Mon, 4 Jan 2021 15:45:56 +0100 Subject: [PATCH] Run PATH-dependent tests serially Since PATH is a shared resource. --- Cargo.lock | 94 ++++++++++++++++++++++++++++++++++++-- Cargo.toml | 1 + tests/integration_tests.rs | 6 +++ 3 files changed, 96 insertions(+), 5 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 2475e202..16a991e3 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -112,6 +112,7 @@ dependencies = [ "semver", "serde", "serde_yaml", + "serial_test", "shell-words", "syntect", "tempdir", @@ -218,6 +219,12 @@ version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + [[package]] name = "chrono" version = "0.4.19" @@ -281,7 +288,7 @@ version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ba125de2af0df55319f41944744ad91c71113bf74a4646efff39afe1f6842db1" dependencies = [ - "cfg-if", + "cfg-if 0.1.10", ] [[package]] @@ -291,7 +298,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c3c7c73a2d1e9fc0886a08b93e98eb643461230d5f1925e4036204d5f2e261a8" dependencies = [ "autocfg", - "cfg-if", + "cfg-if 0.1.10", "lazy_static", ] @@ -443,7 +450,7 @@ version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "da80be589a72651dcda34d8b35bcdc9b7254ad06325611074d9cc0fbb19f60ee" dependencies = [ - "cfg-if", + "cfg-if 0.1.10", "crc32fast", "libc", "miniz_oxide", @@ -485,7 +492,7 @@ version = "0.1.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fc587bc0ec293155d5bfa6b9891ec18a1e330c234f896ea47fbada4cadbe47e6" dependencies = [ - "cfg-if", + "cfg-if 0.1.10", "libc", "wasi", ] @@ -558,6 +565,15 @@ dependencies = [ "hashbrown", ] +[[package]] +name = "instant" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61124eeebbd69b8190558df225adf7e4caafce0d743919e5d6b19652314ec5ec" +dependencies = [ + "cfg-if 1.0.0", +] + [[package]] name = "itoa" version = "0.4.6" @@ -630,13 +646,22 @@ version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8dd5a6d5999d9907cda8ed67bbd137d3af8085216c2ac62de5be860bd41f304a" +[[package]] +name = "lock_api" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd96ffd135b2fd7b973ac026d28085defbe8983df057ced3eb4f2130b0831312" +dependencies = [ + "scopeguard", +] + [[package]] name = "log" version = "0.4.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4fabed175da42fed1fa0746b0ea71f412aa9d35e76e95e59b192c64b9dc2bf8b" dependencies = [ - "cfg-if", + "cfg-if 0.1.10", ] [[package]] @@ -720,6 +745,31 @@ version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2839e79665f131bdb5782e51f2c6c9599c133c6098982a54c794358bf432529c" +[[package]] +name = "parking_lot" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d7744ac029df22dca6284efe4e898991d28e3085c706c972bcd7da4a27a15eb" +dependencies = [ + "instant", + "lock_api", + "parking_lot_core", +] + +[[package]] +name = "parking_lot_core" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ccb628cad4f84851442432c60ad8e1f607e29752d0bf072cbd0baf28aa34272" +dependencies = [ + "cfg-if 1.0.0", + "instant", + "libc", + "redox_syscall", + "smallvec", + "winapi", +] + [[package]] name = "path_abs" version = "0.5.0" @@ -959,6 +1009,12 @@ dependencies = [ "winapi-util", ] +[[package]] +name = "scopeguard" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" + [[package]] name = "semver" version = "0.11.0" @@ -1021,6 +1077,28 @@ dependencies = [ "yaml-rust", ] +[[package]] +name = "serial_test" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0bccbcf40c8938196944a3da0e133e031a33f4d6b72db3bda3cc556e361905d" +dependencies = [ + "lazy_static", + "parking_lot", + "serial_test_derive", +] + +[[package]] +name = "serial_test_derive" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2acd6defeddb41eb60bb468f8825d0cfd0c2a76bc03bfd235b6a1dc4f6a1ad5" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "sha-1" version = "0.8.2" @@ -1039,6 +1117,12 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b6fa3938c99da4914afedd13bf3d79bcb6c277d1b2c398d23257a304d9e1b074" +[[package]] +name = "smallvec" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a55ca5f3b68e41c979bf8c46a6f1da892ca4db8f94023ce0bd32407573b1ac0" + [[package]] name = "std_prelude" version = "0.2.12" diff --git a/Cargo.toml b/Cargo.toml index dd4f61e3..63664537 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -74,6 +74,7 @@ default-features = false [dev-dependencies] tempdir = "0.3" assert_cmd = "1.0.2" +serial_test = "0.5.1" predicates = "1.0.5" [build-dependencies] diff --git a/tests/integration_tests.rs b/tests/integration_tests.rs index 52c04975..e5887d78 100644 --- a/tests/integration_tests.rs +++ b/tests/integration_tests.rs @@ -1,5 +1,6 @@ use assert_cmd::Command; use predicates::{prelude::predicate, str::PredicateStrExt}; +use serial_test::serial; use std::env; use std::path::{Path, PathBuf}; use std::str::from_utf8; @@ -474,6 +475,7 @@ fn pager_value_bat() { /// We shall use less instead of most if PAGER is used since PAGER /// is a generic env var #[test] +#[serial] // Because of PATH fn pager_most_from_pager_env_var() { with_mocked_versions_of_more_and_most_in_path(|| { // If the output is not "I am most\n" then we know 'most' is not used @@ -490,6 +492,7 @@ fn pager_most_from_pager_env_var() { /// If the bat-specific BAT_PAGER is used, obey the wish of the user /// and allow 'most' #[test] +#[serial] // Because of PATH fn pager_most_from_bat_pager_env_var() { with_mocked_versions_of_more_and_most_in_path(|| { bat() @@ -504,6 +507,7 @@ fn pager_most_from_bat_pager_env_var() { /// Same reasoning with --pager as with BAT_PAGER #[test] +#[serial] // Because of PATH fn pager_most_from_pager_arg() { with_mocked_versions_of_more_and_most_in_path(|| { bat() @@ -518,6 +522,7 @@ fn pager_most_from_pager_arg() { /// Make sure the logic for 'most' applies even if an argument is passed #[test] +#[serial] // Because of PATH fn pager_most_with_arg() { with_mocked_versions_of_more_and_most_in_path(|| { bat() @@ -532,6 +537,7 @@ fn pager_most_with_arg() { /// Sanity check that 'more' is treated like 'most' #[test] +#[serial] // Because of PATH fn pager_more() { with_mocked_versions_of_more_and_most_in_path(|| { bat()