mirror of
https://github.com/sharkdp/bat.git
synced 2025-01-31 02:01:05 +00:00
Improve correctness and add more tests
This commit is contained in:
parent
36ccc6a31e
commit
76aad7c74f
@ -54,7 +54,18 @@ impl App {
|
|||||||
{
|
{
|
||||||
// Skip the arguments in bats config file
|
// Skip the arguments in bats config file
|
||||||
|
|
||||||
wild::args_os().collect::<Vec<_>>()
|
let mut cli_args = wild::args_os();
|
||||||
|
|
||||||
|
// Load selected env vars
|
||||||
|
let mut args = get_args_from_env_vars();
|
||||||
|
|
||||||
|
// Put the zero-th CLI argument (program name) first
|
||||||
|
args.insert(0, cli_args.next().unwrap());
|
||||||
|
|
||||||
|
// .. and the rest at the end
|
||||||
|
cli_args.for_each(|a| args.push(a));
|
||||||
|
|
||||||
|
args
|
||||||
} else {
|
} else {
|
||||||
let mut cli_args = wild::args_os();
|
let mut cli_args = wild::args_os();
|
||||||
|
|
||||||
@ -68,11 +79,11 @@ impl App {
|
|||||||
|
|
||||||
// env vars supersede config vars
|
// env vars supersede config vars
|
||||||
get_args_from_env_vars()
|
get_args_from_env_vars()
|
||||||
.iter()
|
.into_iter()
|
||||||
.for_each(|a| args.push(a.into()));
|
.for_each(|a| args.push(a));
|
||||||
|
|
||||||
// .. and the rest at the end
|
// .. and the rest at the end
|
||||||
cli_args.for_each(|a| args.push(a.into()));
|
cli_args.for_each(|a| args.push(a));
|
||||||
|
|
||||||
args
|
args
|
||||||
};
|
};
|
||||||
|
@ -145,8 +145,9 @@ pub fn get_args_from_env_vars() -> Vec<OsString> {
|
|||||||
("--style", "BAT_STYLE"),
|
("--style", "BAT_STYLE"),
|
||||||
]
|
]
|
||||||
.iter()
|
.iter()
|
||||||
.filter_map(|(flag, key)| env::var(key).ok().map(|var| [flag.into(), var.into()]))
|
.filter_map(|(flag, key)| env::var(key).ok().map(|var| [flag.to_string(), var]))
|
||||||
.flatten()
|
.flatten()
|
||||||
|
.map(|a| a.into())
|
||||||
.collect()
|
.collect()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
1
tests/examples/bat-tabs.conf
vendored
Normal file
1
tests/examples/bat-tabs.conf
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
--tabs=8
|
@ -477,6 +477,79 @@ fn tabs_8() {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn tabs_4_env_overrides_config() {
|
||||||
|
bat_with_config()
|
||||||
|
.env("BAT_CONFIG_PATH", "bat-tabs.conf")
|
||||||
|
.env("BAT_TABS", "4")
|
||||||
|
.arg("tabs.txt")
|
||||||
|
.arg("--style=plain")
|
||||||
|
.arg("--decorations=always")
|
||||||
|
.assert()
|
||||||
|
.success()
|
||||||
|
.stdout(
|
||||||
|
" 1 2 3 4
|
||||||
|
1 ?
|
||||||
|
22 ?
|
||||||
|
333 ?
|
||||||
|
4444 ?
|
||||||
|
55555 ?
|
||||||
|
666666 ?
|
||||||
|
7777777 ?
|
||||||
|
88888888 ?
|
||||||
|
",
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn tabs_4_arg_overrides_env() {
|
||||||
|
bat_with_config()
|
||||||
|
.env("BAT_CONFIG_PATH", "bat-tabs.conf")
|
||||||
|
.env("BAT_TABS", "6")
|
||||||
|
.arg("tabs.txt")
|
||||||
|
.arg("--tabs=4")
|
||||||
|
.arg("--style=plain")
|
||||||
|
.arg("--decorations=always")
|
||||||
|
.assert()
|
||||||
|
.success()
|
||||||
|
.stdout(
|
||||||
|
" 1 2 3 4
|
||||||
|
1 ?
|
||||||
|
22 ?
|
||||||
|
333 ?
|
||||||
|
4444 ?
|
||||||
|
55555 ?
|
||||||
|
666666 ?
|
||||||
|
7777777 ?
|
||||||
|
88888888 ?
|
||||||
|
",
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn tabs_4_arg_overrides_env_noconfig() {
|
||||||
|
bat()
|
||||||
|
.env("BAT_TABS", "6")
|
||||||
|
.arg("tabs.txt")
|
||||||
|
.arg("--tabs=4")
|
||||||
|
.arg("--style=plain")
|
||||||
|
.arg("--decorations=always")
|
||||||
|
.assert()
|
||||||
|
.success()
|
||||||
|
.stdout(
|
||||||
|
" 1 2 3 4
|
||||||
|
1 ?
|
||||||
|
22 ?
|
||||||
|
333 ?
|
||||||
|
4444 ?
|
||||||
|
55555 ?
|
||||||
|
666666 ?
|
||||||
|
7777777 ?
|
||||||
|
88888888 ?
|
||||||
|
",
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn fail_non_existing() {
|
fn fail_non_existing() {
|
||||||
bat().arg("non-existing-file").assert().failure();
|
bat().arg("non-existing-file").assert().failure();
|
||||||
@ -544,7 +617,7 @@ fn pager_disable() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn pager_arg_override_env() {
|
fn pager_arg_override_env_withconfig() {
|
||||||
bat_with_config()
|
bat_with_config()
|
||||||
.env("BAT_CONFIG_PATH", "bat.conf")
|
.env("BAT_CONFIG_PATH", "bat.conf")
|
||||||
.env("PAGER", "echo another-pager")
|
.env("PAGER", "echo another-pager")
|
||||||
@ -557,6 +630,19 @@ fn pager_arg_override_env() {
|
|||||||
.stdout(predicate::eq("pager-output\n").normalize());
|
.stdout(predicate::eq("pager-output\n").normalize());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn pager_arg_override_env_noconfig() {
|
||||||
|
bat()
|
||||||
|
.env("PAGER", "echo another-pager")
|
||||||
|
.env("BAT_PAGER", "echo other-pager")
|
||||||
|
.arg("--pager=echo pager-output")
|
||||||
|
.arg("--paging=always")
|
||||||
|
.arg("test.txt")
|
||||||
|
.assert()
|
||||||
|
.success()
|
||||||
|
.stdout(predicate::eq("pager-output\n").normalize());
|
||||||
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn pager_env_bat_pager_override_config() {
|
fn pager_env_bat_pager_override_config() {
|
||||||
bat_with_config()
|
bat_with_config()
|
||||||
@ -1031,6 +1117,35 @@ fn header_full_basic() {
|
|||||||
.stderr("");
|
.stderr("");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn header_env_basic() {
|
||||||
|
bat_with_config()
|
||||||
|
.env("BAT_STYLE", "header-filename,header-filesize")
|
||||||
|
.arg("test.txt")
|
||||||
|
.arg("--decorations=always")
|
||||||
|
.arg("-r=0:0")
|
||||||
|
.arg("--file-name=foo")
|
||||||
|
.assert()
|
||||||
|
.success()
|
||||||
|
.stdout("File: foo\nSize: 12 B\n")
|
||||||
|
.stderr("");
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn header_arg_overrides_env() {
|
||||||
|
bat_with_config()
|
||||||
|
.env("BAT_STYLE", "header-filesize")
|
||||||
|
.arg("test.txt")
|
||||||
|
.arg("--decorations=always")
|
||||||
|
.arg("--style=header-filename")
|
||||||
|
.arg("-r=0:0")
|
||||||
|
.arg("--file-name=foo")
|
||||||
|
.assert()
|
||||||
|
.success()
|
||||||
|
.stdout("File: foo\n")
|
||||||
|
.stderr("");
|
||||||
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn header_binary() {
|
fn header_binary() {
|
||||||
bat()
|
bat()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user