mirror of
https://github.com/sharkdp/bat.git
synced 2025-09-02 03:12:25 +01:00
Merge branch 'master' into read-from-tail
This commit is contained in:
@@ -312,6 +312,41 @@ fn squeeze_limit_line_numbers() {
|
||||
.stdout(" 1 line 1\n 2 \n 3 \n 4 \n 5 line 5\n 6 \n 7 \n 8 \n 9 \n 10 \n 20 line 20\n 21 line 21\n 22 \n 23 \n 24 line 24\n 25 \n 26 line 26\n 27 \n 28 \n 29 \n 30 line 30\n");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn list_themes_with_colors() {
|
||||
#[cfg(target_os = "macos")]
|
||||
let default_theme_chunk = "Monokai Extended Light\x1B[0m (default)";
|
||||
|
||||
#[cfg(not(target_os = "macos"))]
|
||||
let default_theme_chunk = "Monokai Extended\x1B[0m (default)";
|
||||
|
||||
bat()
|
||||
.arg("--color=always")
|
||||
.arg("--list-themes")
|
||||
.assert()
|
||||
.success()
|
||||
.stdout(predicate::str::contains("DarkNeon").normalize())
|
||||
.stdout(predicate::str::contains(default_theme_chunk).normalize())
|
||||
.stdout(predicate::str::contains("Output the square of a number.").normalize());
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn list_themes_without_colors() {
|
||||
#[cfg(target_os = "macos")]
|
||||
let default_theme_chunk = "Monokai Extended Light (default)";
|
||||
|
||||
#[cfg(not(target_os = "macos"))]
|
||||
let default_theme_chunk = "Monokai Extended (default)";
|
||||
|
||||
bat()
|
||||
.arg("--color=never")
|
||||
.arg("--list-themes")
|
||||
.assert()
|
||||
.success()
|
||||
.stdout(predicate::str::contains("DarkNeon").normalize())
|
||||
.stdout(predicate::str::contains(default_theme_chunk).normalize());
|
||||
}
|
||||
|
||||
#[test]
|
||||
#[cfg_attr(any(not(feature = "git"), target_os = "windows"), ignore)]
|
||||
fn short_help() {
|
||||
@@ -2671,3 +2706,215 @@ fn highlighting_independant_from_map_syntax_case() {
|
||||
.stdout(expected)
|
||||
.stderr("");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn strip_ansi_always_strips_ansi() {
|
||||
bat()
|
||||
.arg("--style=plain")
|
||||
.arg("--decorations=always")
|
||||
.arg("--color=never")
|
||||
.arg("--strip-ansi=always")
|
||||
.write_stdin("\x1B[33mYellow\x1B[m")
|
||||
.assert()
|
||||
.success()
|
||||
.stdout("Yellow");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn strip_ansi_never_does_not_strip_ansi() {
|
||||
let output = String::from_utf8(
|
||||
bat()
|
||||
.arg("--style=plain")
|
||||
.arg("--decorations=always")
|
||||
.arg("--color=never")
|
||||
.arg("--strip-ansi=never")
|
||||
.write_stdin("\x1B[33mYellow\x1B[m")
|
||||
.assert()
|
||||
.success()
|
||||
.get_output()
|
||||
.stdout
|
||||
.clone(),
|
||||
)
|
||||
.expect("valid utf8");
|
||||
|
||||
assert!(output.contains("\x1B[33mYellow"))
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn strip_ansi_does_not_affect_simple_printer() {
|
||||
let output = String::from_utf8(
|
||||
bat()
|
||||
.arg("--style=plain")
|
||||
.arg("--decorations=never")
|
||||
.arg("--color=never")
|
||||
.arg("--strip-ansi=always")
|
||||
.write_stdin("\x1B[33mYellow\x1B[m")
|
||||
.assert()
|
||||
.success()
|
||||
.get_output()
|
||||
.stdout
|
||||
.clone(),
|
||||
)
|
||||
.expect("valid utf8");
|
||||
|
||||
assert!(output.contains("\x1B[33mYellow"))
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn strip_ansi_does_not_strip_when_show_nonprintable() {
|
||||
let output = String::from_utf8(
|
||||
bat()
|
||||
.arg("--style=plain")
|
||||
.arg("--decorations=never")
|
||||
.arg("--color=always")
|
||||
.arg("--strip-ansi=always")
|
||||
.arg("--show-nonprintable")
|
||||
.write_stdin("\x1B[33mY")
|
||||
.assert()
|
||||
.success()
|
||||
.get_output()
|
||||
.stdout
|
||||
.clone(),
|
||||
)
|
||||
.expect("valid utf8");
|
||||
|
||||
assert!(output.contains("␛"))
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn strip_ansi_auto_strips_ansi_when_detected_syntax_by_filename() {
|
||||
bat()
|
||||
.arg("--style=plain")
|
||||
.arg("--decorations=always")
|
||||
.arg("--color=never")
|
||||
.arg("--strip-ansi=auto")
|
||||
.arg("--file-name=test.rs")
|
||||
.write_stdin("fn \x1B[33mYellow\x1B[m() -> () {}")
|
||||
.assert()
|
||||
.success()
|
||||
.stdout("fn Yellow() -> () {}");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn strip_ansi_auto_strips_ansi_when_provided_syntax_by_option() {
|
||||
bat()
|
||||
.arg("--style=plain")
|
||||
.arg("--decorations=always")
|
||||
.arg("--color=never")
|
||||
.arg("--strip-ansi=auto")
|
||||
.arg("--language=rust")
|
||||
.write_stdin("fn \x1B[33mYellow\x1B[m() -> () {}")
|
||||
.assert()
|
||||
.success()
|
||||
.stdout("fn Yellow() -> () {}");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn strip_ansi_auto_does_not_strip_when_plain_text_by_filename() {
|
||||
let output = String::from_utf8(
|
||||
bat()
|
||||
.arg("--style=plain")
|
||||
.arg("--decorations=always")
|
||||
.arg("--color=never")
|
||||
.arg("--strip-ansi=auto")
|
||||
.arg("--file-name=ansi.txt")
|
||||
.write_stdin("\x1B[33mYellow\x1B[m")
|
||||
.assert()
|
||||
.success()
|
||||
.get_output()
|
||||
.stdout
|
||||
.clone(),
|
||||
)
|
||||
.expect("valid utf8");
|
||||
|
||||
assert!(output.contains("\x1B[33mYellow"))
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn strip_ansi_auto_does_not_strip_ansi_when_plain_text_by_option() {
|
||||
let output = String::from_utf8(
|
||||
bat()
|
||||
.arg("--style=plain")
|
||||
.arg("--decorations=always")
|
||||
.arg("--color=never")
|
||||
.arg("--strip-ansi=auto")
|
||||
.arg("--language=txt")
|
||||
.write_stdin("\x1B[33mYellow\x1B[m")
|
||||
.assert()
|
||||
.success()
|
||||
.get_output()
|
||||
.stdout
|
||||
.clone(),
|
||||
)
|
||||
.expect("valid utf8");
|
||||
|
||||
assert!(output.contains("\x1B[33mYellow"))
|
||||
}
|
||||
|
||||
// Tests that style components can be removed with `-component`.
|
||||
#[test]
|
||||
fn style_components_can_be_removed() {
|
||||
bat()
|
||||
.arg({
|
||||
#[cfg(not(feature = "git"))]
|
||||
{
|
||||
"--style=full,-grid"
|
||||
}
|
||||
#[cfg(feature = "git")]
|
||||
{
|
||||
"--style=full,-grid,-changes"
|
||||
}
|
||||
})
|
||||
.arg("--decorations=always")
|
||||
.arg("--color=never")
|
||||
.write_stdin("test")
|
||||
.assert()
|
||||
.success()
|
||||
.stdout(" STDIN\n Size: -\n 1 test\n")
|
||||
.stderr("");
|
||||
}
|
||||
|
||||
// Tests that style components are chosen based on the rightmost `--style` argument.
|
||||
#[test]
|
||||
fn style_components_can_be_overidden() {
|
||||
bat()
|
||||
.arg("--style=full")
|
||||
.arg("--style=header,numbers")
|
||||
.arg("--decorations=always")
|
||||
.arg("--color=never")
|
||||
.write_stdin("test")
|
||||
.assert()
|
||||
.success()
|
||||
.stdout(" STDIN\n 1 test\n")
|
||||
.stderr("");
|
||||
}
|
||||
|
||||
// Tests that style components can be merged across multiple `--style` arguments.
|
||||
#[test]
|
||||
fn style_components_will_merge() {
|
||||
bat()
|
||||
.arg("--style=header,grid")
|
||||
.arg("--style=-grid,+numbers")
|
||||
.arg("--decorations=always")
|
||||
.arg("--color=never")
|
||||
.write_stdin("test")
|
||||
.assert()
|
||||
.success()
|
||||
.stdout(" STDIN\n 1 test\n")
|
||||
.stderr("");
|
||||
}
|
||||
|
||||
// Tests that style components can be merged with the `BAT_STYLE` environment variable.
|
||||
#[test]
|
||||
fn style_components_will_merge_with_env_var() {
|
||||
bat()
|
||||
.env("BAT_STYLE", "header,grid")
|
||||
.arg("--style=-grid,+numbers")
|
||||
.arg("--decorations=always")
|
||||
.arg("--color=never")
|
||||
.write_stdin("test")
|
||||
.assert()
|
||||
.success()
|
||||
.stdout(" STDIN\n 1 test\n")
|
||||
.stderr("");
|
||||
}
|
||||
|
Reference in New Issue
Block a user