mirror of
https://github.com/Llewellynvdm/exa.git
synced 2024-11-21 19:45:11 +00:00
[no-color] - add unit test and doc
This commit is contained in:
parent
aab1d3db59
commit
a371c41711
@ -224,6 +224,12 @@ Specifies the number of spaces to print between an icon (see the ‘`--icons`’
|
||||
|
||||
Different terminals display icons differently, as they usually take up more than one character width on screen, so there’s no “standard” number of spaces that exa can use to separate an icon from text. One space may place the icon too close to the text, and two spaces may place it too far away. So the choice is left up to the user to configure depending on their terminal emulator.
|
||||
|
||||
## `NO_COLOR`
|
||||
|
||||
Disables ANSI colour in the output (regardless of its value). Can be overridden by `--color` option.
|
||||
|
||||
See `https://no-color.org/` for details.
|
||||
|
||||
## `LS_COLORS`, `EXA_COLORS`
|
||||
|
||||
Specifies the colour scheme used to highlight files based on their name and kind, as well as highlighting metadata and parts of the UI.
|
||||
|
@ -92,6 +92,16 @@ mod terminal_test {
|
||||
}
|
||||
};
|
||||
|
||||
($name:ident: $type:ident <- $inputs:expr, $env:expr; $stricts:expr => $result:expr) => {
|
||||
#[test]
|
||||
fn $name() {
|
||||
let env = $env;
|
||||
for result in parse_for_test($inputs.as_ref(), TEST_ARGS, $stricts, |mf| $type::deduce(mf, &env)) {
|
||||
assert_eq!(result, $result);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
($name:ident: $type:ident <- $inputs:expr; $stricts:expr => err $result:expr) => {
|
||||
#[test]
|
||||
fn $name() {
|
||||
@ -100,11 +110,39 @@ mod terminal_test {
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
($name:ident: $type:ident <- $inputs:expr, $env:expr; $stricts:expr => err $result:expr) => {
|
||||
#[test]
|
||||
fn $name() {
|
||||
let env = $env;
|
||||
for result in parse_for_test($inputs.as_ref(), TEST_ARGS, $stricts, |mf| $type::deduce(mf, &env)) {
|
||||
assert_eq!(result.unwrap_err(), $result);
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
struct MockVars {
|
||||
ls: &'static str,
|
||||
exa: &'static str,
|
||||
no_color: &'static str,
|
||||
}
|
||||
|
||||
impl MockVars {
|
||||
fn empty() -> MockVars {
|
||||
return MockVars {
|
||||
ls: "",
|
||||
exa: "",
|
||||
no_color: "",
|
||||
};
|
||||
}
|
||||
fn with_no_color() -> MockVars {
|
||||
return MockVars {
|
||||
ls: "",
|
||||
exa: "",
|
||||
no_color: "true",
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
// Test impl that just returns the value it has.
|
||||
@ -116,6 +154,9 @@ mod terminal_test {
|
||||
else if name == vars::EXA_COLORS && ! self.exa.is_empty() {
|
||||
Some(OsString::from(self.exa.clone()))
|
||||
}
|
||||
else if name == vars::NO_COLOR && ! self.no_color.is_empty() {
|
||||
Some(OsString::from(self.no_color.clone()))
|
||||
}
|
||||
else {
|
||||
None
|
||||
}
|
||||
@ -125,32 +166,33 @@ mod terminal_test {
|
||||
|
||||
|
||||
// Default
|
||||
test!(empty: UseColours <- []; Both => Ok(UseColours::Automatic));
|
||||
test!(empty: UseColours <- [], MockVars::empty(); Both => Ok(UseColours::Automatic));
|
||||
test!(empty_with_no_color: UseColours <- [], MockVars::with_no_color(); Both => Ok(UseColours::Never));
|
||||
|
||||
// --colour
|
||||
test!(u_always: UseColours <- ["--colour=always"]; Both => Ok(UseColours::Always));
|
||||
test!(u_auto: UseColours <- ["--colour", "auto"]; Both => Ok(UseColours::Automatic));
|
||||
test!(u_never: UseColours <- ["--colour=never"]; Both => Ok(UseColours::Never));
|
||||
test!(u_always: UseColours <- ["--colour=always"], MockVars::empty(); Both => Ok(UseColours::Always));
|
||||
test!(u_auto: UseColours <- ["--colour", "auto"], MockVars::empty(); Both => Ok(UseColours::Automatic));
|
||||
test!(u_never: UseColours <- ["--colour=never"], MockVars::empty(); Both => Ok(UseColours::Never));
|
||||
|
||||
// --color
|
||||
test!(no_u_always: UseColours <- ["--color", "always"]; Both => Ok(UseColours::Always));
|
||||
test!(no_u_auto: UseColours <- ["--color=auto"]; Both => Ok(UseColours::Automatic));
|
||||
test!(no_u_never: UseColours <- ["--color", "never"]; Both => Ok(UseColours::Never));
|
||||
test!(no_u_always: UseColours <- ["--color", "always"], MockVars::empty(); Both => Ok(UseColours::Always));
|
||||
test!(no_u_auto: UseColours <- ["--color=auto"], MockVars::empty(); Both => Ok(UseColours::Automatic));
|
||||
test!(no_u_never: UseColours <- ["--color", "never"], MockVars::empty(); Both => Ok(UseColours::Never));
|
||||
|
||||
// Errors
|
||||
test!(no_u_error: UseColours <- ["--color=upstream"]; Both => err OptionsError::BadArgument(&flags::COLOR, OsString::from("upstream"))); // the error is for --color
|
||||
test!(u_error: UseColours <- ["--colour=lovers"]; Both => err OptionsError::BadArgument(&flags::COLOR, OsString::from("lovers"))); // and so is this one!
|
||||
test!(no_u_error: UseColours <- ["--color=upstream"], MockVars::empty(); Both => err OptionsError::BadArgument(&flags::COLOR, OsString::from("upstream"))); // the error is for --color
|
||||
test!(u_error: UseColours <- ["--colour=lovers"], MockVars::empty(); Both => err OptionsError::BadArgument(&flags::COLOR, OsString::from("lovers"))); // and so is this one!
|
||||
|
||||
// Overriding
|
||||
test!(overridden_1: UseColours <- ["--colour=auto", "--colour=never"]; Last => Ok(UseColours::Never));
|
||||
test!(overridden_2: UseColours <- ["--color=auto", "--colour=never"]; Last => Ok(UseColours::Never));
|
||||
test!(overridden_3: UseColours <- ["--colour=auto", "--color=never"]; Last => Ok(UseColours::Never));
|
||||
test!(overridden_4: UseColours <- ["--color=auto", "--color=never"]; Last => Ok(UseColours::Never));
|
||||
test!(overridden_1: UseColours <- ["--colour=auto", "--colour=never"], MockVars::empty(); Last => Ok(UseColours::Never));
|
||||
test!(overridden_2: UseColours <- ["--color=auto", "--colour=never"], MockVars::empty(); Last => Ok(UseColours::Never));
|
||||
test!(overridden_3: UseColours <- ["--colour=auto", "--color=never"], MockVars::empty(); Last => Ok(UseColours::Never));
|
||||
test!(overridden_4: UseColours <- ["--color=auto", "--color=never"], MockVars::empty(); Last => Ok(UseColours::Never));
|
||||
|
||||
test!(overridden_5: UseColours <- ["--colour=auto", "--colour=never"]; Complain => err OptionsError::Duplicate(Flag::Long("colour"), Flag::Long("colour")));
|
||||
test!(overridden_6: UseColours <- ["--color=auto", "--colour=never"]; Complain => err OptionsError::Duplicate(Flag::Long("color"), Flag::Long("colour")));
|
||||
test!(overridden_7: UseColours <- ["--colour=auto", "--color=never"]; Complain => err OptionsError::Duplicate(Flag::Long("colour"), Flag::Long("color")));
|
||||
test!(overridden_8: UseColours <- ["--color=auto", "--color=never"]; Complain => err OptionsError::Duplicate(Flag::Long("color"), Flag::Long("color")));
|
||||
test!(overridden_5: UseColours <- ["--colour=auto", "--colour=never"], MockVars::empty(); Complain => err OptionsError::Duplicate(Flag::Long("colour"), Flag::Long("colour")));
|
||||
test!(overridden_6: UseColours <- ["--color=auto", "--colour=never"], MockVars::empty(); Complain => err OptionsError::Duplicate(Flag::Long("color"), Flag::Long("colour")));
|
||||
test!(overridden_7: UseColours <- ["--colour=auto", "--color=never"], MockVars::empty(); Complain => err OptionsError::Duplicate(Flag::Long("colour"), Flag::Long("color")));
|
||||
test!(overridden_8: UseColours <- ["--color=auto", "--color=never"], MockVars::empty(); Complain => err OptionsError::Duplicate(Flag::Long("color"), Flag::Long("color")));
|
||||
|
||||
test!(scale_1: ColourScale <- ["--color-scale", "--colour-scale"]; Last => Ok(ColourScale::Gradient));
|
||||
test!(scale_2: ColourScale <- ["--color-scale", ]; Last => Ok(ColourScale::Gradient));
|
||||
|
Loading…
Reference in New Issue
Block a user