From e87c554ccd0d4eb22794e1d193b8911b1d11edb1 Mon Sep 17 00:00:00 2001 From: Martin Nordholts Date: Mon, 4 Jan 2021 17:20:02 +0100 Subject: [PATCH] tests: Make mocked pagers work on Windows --- tests/integration_tests.rs | 36 ++++++++++++++++++++++++------------ tests/mocked-pagers/more | 2 +- tests/mocked-pagers/more.bat | 1 + tests/mocked-pagers/most | 2 +- tests/mocked-pagers/most.bat | 1 + 5 files changed, 28 insertions(+), 14 deletions(-) create mode 100755 tests/mocked-pagers/more.bat create mode 100755 tests/mocked-pagers/most.bat diff --git a/tests/integration_tests.rs b/tests/integration_tests.rs index e5887d78..a85f0fd4 100644 --- a/tests/integration_tests.rs +++ b/tests/integration_tests.rs @@ -34,6 +34,18 @@ fn get_mocked_pagers_dir() -> PathBuf { .join("mocked-pagers") } +/// On Unix: 'most' -> 'most' +/// On Windows: 'most' -> 'most.bat' +fn mocked_pager(base: &str) -> String { + if cfg!(windows) { + let mut str = String::from(base); + str.push_str(".bat"); + str + } else { + String::from(base) + } +} + /// Prepends a directory to the PATH environment variable /// Returns the original value for later restoration fn prepend_dir_to_path_env_var(dir: PathBuf) -> String { @@ -64,14 +76,14 @@ fn with_mocked_versions_of_more_and_most_in_path(actual_test: fn()) { let original_path = prepend_dir_to_path_env_var(get_mocked_pagers_dir()); // Make sure our own variants of 'more' and 'most' is used - Command::new("more") + Command::new(mocked_pager("more")) .assert() .success() - .stdout("I am more\n"); - Command::new("most") + .stdout(predicate::str::contains("I am more")); + Command::new(mocked_pager("most")) .assert() .success() - .stdout("I am most\n"); + .stdout(predicate::str::contains("I am most")); // Now run the actual test actual_test(); @@ -478,9 +490,9 @@ fn pager_value_bat() { #[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 + // If the output is not "I am most" then we know 'most' is not used bat() - .env("PAGER", "most") + .env("PAGER", mocked_pager("most")) .arg("--paging=always") .arg("test.txt") .assert() @@ -496,12 +508,12 @@ fn pager_most_from_pager_env_var() { fn pager_most_from_bat_pager_env_var() { with_mocked_versions_of_more_and_most_in_path(|| { bat() - .env("BAT_PAGER", "most") + .env("BAT_PAGER", mocked_pager("most")) .arg("--paging=always") .arg("test.txt") .assert() .success() - .stdout(predicate::eq("I am most\n").normalize()); + .stdout(predicate::str::contains("I am most")); }); } @@ -512,11 +524,11 @@ fn pager_most_from_pager_arg() { with_mocked_versions_of_more_and_most_in_path(|| { bat() .arg("--paging=always") - .arg("--pager=most") + .arg(format!("--pager={}", mocked_pager("most"))) .arg("test.txt") .assert() .success() - .stdout(predicate::eq("I am most\n").normalize()); + .stdout(predicate::str::contains("I am most")); }); } @@ -526,7 +538,7 @@ fn pager_most_from_pager_arg() { fn pager_most_with_arg() { with_mocked_versions_of_more_and_most_in_path(|| { bat() - .env("PAGER", "most -w") + .env("PAGER", format!("{} -w", mocked_pager("most"))) .arg("--paging=always") .arg("test.txt") .assert() @@ -541,7 +553,7 @@ fn pager_most_with_arg() { fn pager_more() { with_mocked_versions_of_more_and_most_in_path(|| { bat() - .env("PAGER", "more") + .env("PAGER", mocked_pager("more")) .arg("--paging=always") .arg("test.txt") .assert() diff --git a/tests/mocked-pagers/more b/tests/mocked-pagers/more index 9b14f0b7..cb57549b 100755 --- a/tests/mocked-pagers/more +++ b/tests/mocked-pagers/more @@ -1,2 +1,2 @@ #!/usr/bin/env bash -echo "I am more" +echo I am more diff --git a/tests/mocked-pagers/more.bat b/tests/mocked-pagers/more.bat new file mode 100755 index 00000000..61c3ac08 --- /dev/null +++ b/tests/mocked-pagers/more.bat @@ -0,0 +1 @@ +ECHO I am more diff --git a/tests/mocked-pagers/most b/tests/mocked-pagers/most index ec0962e5..29ee1ea3 100755 --- a/tests/mocked-pagers/most +++ b/tests/mocked-pagers/most @@ -1,2 +1,2 @@ #!/usr/bin/env bash -echo "I am most" +echo I am most diff --git a/tests/mocked-pagers/most.bat b/tests/mocked-pagers/most.bat new file mode 100755 index 00000000..1082ee07 --- /dev/null +++ b/tests/mocked-pagers/most.bat @@ -0,0 +1 @@ +ECHO I am most