on master help sign in
Run PATH-dependent tests serially
df33ed0Martin Nordholts
Cargo.lock+89−5
@@ -112,6 +112,7 @@ dependencies = [
112 "semver",
112 "semver",
113 "serde",
113 "serde",
114 "serde_yaml",
114 "serde_yaml",
115+ "serial_test",
115 "shell-words",
116 "shell-words",
116 "syntect",
117 "syntect",
117 "tempdir",
118 "tempdir",
@@ -218,6 +219,12 @@ version = "0.1.10"
218source = "registry+https://github.com/rust-lang/crates.io-index"
219source = "registry+https://github.com/rust-lang/crates.io-index"
219checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822"
220checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822"
220
221
222+[[package]]
223+name = "cfg-if"
224+version = "1.0.0"
225+source = "registry+https://github.com/rust-lang/crates.io-index"
226+checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
227+
221[[package]]
228[[package]]
222name = "chrono"
229name = "chrono"
223version = "0.4.19"
230version = "0.4.19"
@@ -281,7 +288,7 @@ version = "1.2.0"
281source = "registry+https://github.com/rust-lang/crates.io-index"
288source = "registry+https://github.com/rust-lang/crates.io-index"
282checksum = "ba125de2af0df55319f41944744ad91c71113bf74a4646efff39afe1f6842db1"
289checksum = "ba125de2af0df55319f41944744ad91c71113bf74a4646efff39afe1f6842db1"
283dependencies = [
290dependencies = [
284− "cfg-if",
291+ "cfg-if 0.1.10",
285]
292]
286
293
287[[package]]
294[[package]]
@@ -291,7 +298,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
291checksum = "c3c7c73a2d1e9fc0886a08b93e98eb643461230d5f1925e4036204d5f2e261a8"
298checksum = "c3c7c73a2d1e9fc0886a08b93e98eb643461230d5f1925e4036204d5f2e261a8"
292dependencies = [
299dependencies = [
293 "autocfg",
300 "autocfg",
294− "cfg-if",
301+ "cfg-if 0.1.10",
295 "lazy_static",
302 "lazy_static",
296]
303]
297
304
@@ -443,7 +450,7 @@ version = "1.0.18"
443source = "registry+https://github.com/rust-lang/crates.io-index"
450source = "registry+https://github.com/rust-lang/crates.io-index"
444checksum = "da80be589a72651dcda34d8b35bcdc9b7254ad06325611074d9cc0fbb19f60ee"
451checksum = "da80be589a72651dcda34d8b35bcdc9b7254ad06325611074d9cc0fbb19f60ee"
445dependencies = [
452dependencies = [
446− "cfg-if",
453+ "cfg-if 0.1.10",
447 "crc32fast",
454 "crc32fast",
448 "libc",
455 "libc",
449 "miniz_oxide",
456 "miniz_oxide",
@@ -485,7 +492,7 @@ version = "0.1.15"
485source = "registry+https://github.com/rust-lang/crates.io-index"
492source = "registry+https://github.com/rust-lang/crates.io-index"
486checksum = "fc587bc0ec293155d5bfa6b9891ec18a1e330c234f896ea47fbada4cadbe47e6"
493checksum = "fc587bc0ec293155d5bfa6b9891ec18a1e330c234f896ea47fbada4cadbe47e6"
487dependencies = [
494dependencies = [
488− "cfg-if",
495+ "cfg-if 0.1.10",
489 "libc",
496 "libc",
490 "wasi",
497 "wasi",
491]
498]
@@ -558,6 +565,15 @@ dependencies = [
558 "hashbrown",
565 "hashbrown",
559]
566]
560
567
568+[[package]]
569+name = "instant"
570+version = "0.1.9"
571+source = "registry+https://github.com/rust-lang/crates.io-index"
572+checksum = "61124eeebbd69b8190558df225adf7e4caafce0d743919e5d6b19652314ec5ec"
573+dependencies = [
574+ "cfg-if 1.0.0",
575+]
576+
561[[package]]
577[[package]]
562name = "itoa"
578name = "itoa"
563version = "0.4.6"
579version = "0.4.6"
@@ -630,13 +646,22 @@ version = "0.5.3"
630source = "registry+https://github.com/rust-lang/crates.io-index"
646source = "registry+https://github.com/rust-lang/crates.io-index"
631checksum = "8dd5a6d5999d9907cda8ed67bbd137d3af8085216c2ac62de5be860bd41f304a"
647checksum = "8dd5a6d5999d9907cda8ed67bbd137d3af8085216c2ac62de5be860bd41f304a"
632
648
649+[[package]]
650+name = "lock_api"
651+version = "0.4.2"
652+source = "registry+https://github.com/rust-lang/crates.io-index"
653+checksum = "dd96ffd135b2fd7b973ac026d28085defbe8983df057ced3eb4f2130b0831312"
654+dependencies = [
655+ "scopeguard",
656+]
657+
633[[package]]
658[[package]]
634name = "log"
659name = "log"
635version = "0.4.11"
660version = "0.4.11"
636source = "registry+https://github.com/rust-lang/crates.io-index"
661source = "registry+https://github.com/rust-lang/crates.io-index"
637checksum = "4fabed175da42fed1fa0746b0ea71f412aa9d35e76e95e59b192c64b9dc2bf8b"
662checksum = "4fabed175da42fed1fa0746b0ea71f412aa9d35e76e95e59b192c64b9dc2bf8b"
638dependencies = [
663dependencies = [
639− "cfg-if",
664+ "cfg-if 0.1.10",
640]
665]
641
666
642[[package]]
667[[package]]
@@ -720,6 +745,31 @@ version = "0.2.3"
720source = "registry+https://github.com/rust-lang/crates.io-index"
745source = "registry+https://github.com/rust-lang/crates.io-index"
721checksum = "2839e79665f131bdb5782e51f2c6c9599c133c6098982a54c794358bf432529c"
746checksum = "2839e79665f131bdb5782e51f2c6c9599c133c6098982a54c794358bf432529c"
722
747
748+[[package]]
749+name = "parking_lot"
750+version = "0.11.1"
751+source = "registry+https://github.com/rust-lang/crates.io-index"
752+checksum = "6d7744ac029df22dca6284efe4e898991d28e3085c706c972bcd7da4a27a15eb"
753+dependencies = [
754+ "instant",
755+ "lock_api",
756+ "parking_lot_core",
757+]
758+
759+[[package]]
760+name = "parking_lot_core"
761+version = "0.8.2"
762+source = "registry+https://github.com/rust-lang/crates.io-index"
763+checksum = "9ccb628cad4f84851442432c60ad8e1f607e29752d0bf072cbd0baf28aa34272"
764+dependencies = [
765+ "cfg-if 1.0.0",
766+ "instant",
767+ "libc",
768+ "redox_syscall",
769+ "smallvec",
770+ "winapi",
771+]
772+
723[[package]]
773[[package]]
724name = "path_abs"
774name = "path_abs"
725version = "0.5.0"
775version = "0.5.0"
@@ -959,6 +1009,12 @@ dependencies = [
959 "winapi-util",
1009 "winapi-util",
960]
1010]
961
1011
1012+[[package]]
1013+name = "scopeguard"
1014+version = "1.1.0"
1015+source = "registry+https://github.com/rust-lang/crates.io-index"
1016+checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd"
1017+
962[[package]]
1018[[package]]
963name = "semver"
1019name = "semver"
964version = "0.11.0"
1020version = "0.11.0"
@@ -1021,6 +1077,28 @@ dependencies = [
1021 "yaml-rust",
1077 "yaml-rust",
1022]
1078]
1023
1079
1080+[[package]]
1081+name = "serial_test"
1082+version = "0.5.1"
1083+source = "registry+https://github.com/rust-lang/crates.io-index"
1084+checksum = "e0bccbcf40c8938196944a3da0e133e031a33f4d6b72db3bda3cc556e361905d"
1085+dependencies = [
1086+ "lazy_static",
1087+ "parking_lot",
1088+ "serial_test_derive",
1089+]
1090+
1091+[[package]]
1092+name = "serial_test_derive"
1093+version = "0.5.1"
1094+source = "registry+https://github.com/rust-lang/crates.io-index"
1095+checksum = "b2acd6defeddb41eb60bb468f8825d0cfd0c2a76bc03bfd235b6a1dc4f6a1ad5"
1096+dependencies = [
1097+ "proc-macro2",
1098+ "quote",
1099+ "syn",
1100+]
1101+
1024[[package]]
1102[[package]]
1025name = "sha-1"
1103name = "sha-1"
1026version = "0.8.2"
1104version = "0.8.2"
@@ -1039,6 +1117,12 @@ version = "1.0.0"
1039source = "registry+https://github.com/rust-lang/crates.io-index"
1117source = "registry+https://github.com/rust-lang/crates.io-index"
1040checksum = "b6fa3938c99da4914afedd13bf3d79bcb6c277d1b2c398d23257a304d9e1b074"
1118checksum = "b6fa3938c99da4914afedd13bf3d79bcb6c277d1b2c398d23257a304d9e1b074"
1041
1119
1120+[[package]]
1121+name = "smallvec"
1122+version = "1.6.0"
1123+source = "registry+https://github.com/rust-lang/crates.io-index"
1124+checksum = "1a55ca5f3b68e41c979bf8c46a6f1da892ca4db8f94023ce0bd32407573b1ac0"
1125+
1042[[package]]
1126[[package]]
1043name = "std_prelude"
1127name = "std_prelude"
1044version = "0.2.12"
1128version = "0.2.12"
Cargo.toml+1
@@ -74,6 +74,7 @@ default-features = false
74[dev-dependencies]
74[dev-dependencies]
75tempdir = "0.3"
75tempdir = "0.3"
76assert_cmd = "1.0.2"
76assert_cmd = "1.0.2"
77+serial_test = "0.5.1"
77predicates = "1.0.5"
78predicates = "1.0.5"
78
79
79[build-dependencies]
80[build-dependencies]
tests/integration_tests.rs+6
@@ -1,5 +1,6 @@
1use assert_cmd::Command;
1use assert_cmd::Command;
2use predicates::{prelude::predicate, str::PredicateStrExt};
2use predicates::{prelude::predicate, str::PredicateStrExt};
3+use serial_test::serial;
3use std::env;
4use std::env;
4use std::path::{Path, PathBuf};
5use std::path::{Path, PathBuf};
5use std::str::from_utf8;
6use std::str::from_utf8;
@@ -474,6 +475,7 @@ fn pager_value_bat() {
474/// We shall use less instead of most if PAGER is used since PAGER
475/// We shall use less instead of most if PAGER is used since PAGER
475/// is a generic env var
476/// is a generic env var
476#[test]
477#[test]
478+#[serial] // Because of PATH
477fn pager_most_from_pager_env_var() {
479fn pager_most_from_pager_env_var() {
478 with_mocked_versions_of_more_and_most_in_path(|| {
480 with_mocked_versions_of_more_and_most_in_path(|| {
479 // If the output is not "I am most\n" then we know 'most' is not used
481 // 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() {
490/// If the bat-specific BAT_PAGER is used, obey the wish of the user
492/// If the bat-specific BAT_PAGER is used, obey the wish of the user
491/// and allow 'most'
493/// and allow 'most'
492#[test]
494#[test]
495+#[serial] // Because of PATH
493fn pager_most_from_bat_pager_env_var() {
496fn pager_most_from_bat_pager_env_var() {
494 with_mocked_versions_of_more_and_most_in_path(|| {
497 with_mocked_versions_of_more_and_most_in_path(|| {
495 bat()
498 bat()
@@ -504,6 +507,7 @@ fn pager_most_from_bat_pager_env_var() {
504
507
505/// Same reasoning with --pager as with BAT_PAGER
508/// Same reasoning with --pager as with BAT_PAGER
506#[test]
509#[test]
510+#[serial] // Because of PATH
507fn pager_most_from_pager_arg() {
511fn pager_most_from_pager_arg() {
508 with_mocked_versions_of_more_and_most_in_path(|| {
512 with_mocked_versions_of_more_and_most_in_path(|| {
509 bat()
513 bat()
@@ -518,6 +522,7 @@ fn pager_most_from_pager_arg() {
518
522
519/// Make sure the logic for 'most' applies even if an argument is passed
523/// Make sure the logic for 'most' applies even if an argument is passed
520#[test]
524#[test]
525+#[serial] // Because of PATH
521fn pager_most_with_arg() {
526fn pager_most_with_arg() {
522 with_mocked_versions_of_more_and_most_in_path(|| {
527 with_mocked_versions_of_more_and_most_in_path(|| {
523 bat()
528 bat()
@@ -532,6 +537,7 @@ fn pager_most_with_arg() {
532
537
533/// Sanity check that 'more' is treated like 'most'
538/// Sanity check that 'more' is treated like 'most'
534#[test]
539#[test]
540+#[serial] // Because of PATH
535fn pager_more() {
541fn pager_more() {
536 with_mocked_versions_of_more_and_most_in_path(|| {
542 with_mocked_versions_of_more_and_most_in_path(|| {
537 bat()
543 bat()