on master help sign in
Throws an error when `bat` is being user as pager.

As mentioned on #1334 `bat` should not be used as a value for `pager`, this change checks both the balue of `bat` provided as a parameter or as an environment variable.

commit9837948c3a7d59b0629ed5f176cd2861eb340af0 authorAdrian Rivera <adrian.rivera.dev@gmail.com> dateSun 25 Oct 2020, 02:13 (6 years ago) parent072fb38
3 files changed+16−2
src/error.rs+4 src/output.rs+2−2 tests/integration_tests.rs+10
src/error.rs+4
@@ -20,6 +20,10 @@ error_chain! {
2020 description("unknown syntax"),
2121 display("unknown syntax: '{}'", name)
2222 }
23+ InvalidPagerValueBat {
24+ description("invalid value `bat` for pager property"),
25+ display("Use of bat as a pager is disallowed in order to avoid infinite recursion problems")
26+ }
2327 }
2428}
2529
src/output.rs+2−2
@@ -85,10 +85,10 @@ impl OutputType {
8585
8686 match pagerflags.split_first() {
8787 Some((pager_name, args)) => {
88− let mut pager_path = PathBuf::from(pager_name);
88+ let pager_path = PathBuf::from(pager_name);
8989
9090 if pager_path.file_stem() == Some(&OsString::from("bat")) {
91− pager_path = PathBuf::from("less");
91+ return Err(ErrorKind::InvalidPagerValueBat.into());
9292 }
9393
9494 let is_less = pager_path.file_stem() == Some(&OsString::from("less"));
tests/integration_tests.rs+10
@@ -405,6 +405,16 @@ fn pager_disable() {
405405 .stdout(predicate::eq("hello world\n").normalize());
406406}
407407
408+#[test]
409+fn pager_value_bat() {
410+ bat()
411+ .arg("--pager=bat")
412+ .arg("--paging=always")
413+ .arg("test.txt")
414+ .assert()
415+ .failure();
416+}
417+
408418#[test]
409419fn alias_pager_disable() {
410420 bat()