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.
This commit is contained in:
Adrian Rivera 2020-10-25 02:13:57 -07:00 committed by David Peter
parent 072fb380d8
commit 9837948c3a
3 changed files with 16 additions and 2 deletions

View File

@ -20,6 +20,10 @@ error_chain! {
description("unknown syntax"),
display("unknown syntax: '{}'", name)
}
InvalidPagerValueBat {
description("invalid value `bat` for pager property"),
display("Use of bat as a pager is disallowed in order to avoid infinite recursion problems")
}
}
}

View File

@ -85,10 +85,10 @@ impl OutputType {
match pagerflags.split_first() {
Some((pager_name, args)) => {
let mut pager_path = PathBuf::from(pager_name);
let pager_path = PathBuf::from(pager_name);
if pager_path.file_stem() == Some(&OsString::from("bat")) {
pager_path = PathBuf::from("less");
return Err(ErrorKind::InvalidPagerValueBat.into());
}
let is_less = pager_path.file_stem() == Some(&OsString::from("less"));

View File

@ -405,6 +405,16 @@ fn pager_disable() {
.stdout(predicate::eq("hello world\n").normalize());
}
#[test]
fn pager_value_bat() {
bat()
.arg("--pager=bat")
.arg("--paging=always")
.arg("test.txt")
.assert()
.failure();
}
#[test]
fn alias_pager_disable() {
bat()