mirror of
https://github.com/sharkdp/bat.git
synced 2025-09-02 11:22:30 +01:00
Merge branch 'master' into 2783-setting-terminal-title
This commit is contained in:
@@ -1175,6 +1175,20 @@ fn bom_stripped_when_no_color_and_not_loop_through() {
|
||||
);
|
||||
}
|
||||
|
||||
// Regression test for https://github.com/sharkdp/bat/issues/2541
|
||||
#[test]
|
||||
fn no_broken_osc_emit_with_line_wrapping() {
|
||||
bat()
|
||||
.arg("--color=always")
|
||||
.arg("--decorations=never")
|
||||
.arg("--wrap=character")
|
||||
.arg("--terminal-width=40")
|
||||
.arg("regression_tests/issue_2541.txt")
|
||||
.assert()
|
||||
.success()
|
||||
.stdout(predicate::function(|s: &str| s.lines().count() == 1));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn can_print_file_named_cache() {
|
||||
bat_with_config()
|
||||
@@ -1393,6 +1407,61 @@ fn header_full_binary() {
|
||||
.stderr("");
|
||||
}
|
||||
|
||||
#[test]
|
||||
#[cfg(not(feature = "git"))]
|
||||
fn header_narrow_terminal() {
|
||||
bat()
|
||||
.arg("--terminal-width=30")
|
||||
.arg("--decorations=always")
|
||||
.arg("this-file-path-is-really-long-and-would-have-broken-the-layout-of-the-header.txt")
|
||||
.assert()
|
||||
.success()
|
||||
.stdout(
|
||||
"\
|
||||
─────┬────────────────────────
|
||||
│ File: this-file-path-is
|
||||
│ -really-long-and-would-
|
||||
│ have-broken-the-layout-
|
||||
│ of-the-header.txt
|
||||
─────┼────────────────────────
|
||||
1 │ The header is not broke
|
||||
│ n
|
||||
─────┴────────────────────────
|
||||
",
|
||||
)
|
||||
.stderr("");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn header_very_narrow_terminal() {
|
||||
bat()
|
||||
.arg("--terminal-width=10")
|
||||
.arg("--decorations=always")
|
||||
.arg("this-file-path-is-really-long-and-would-have-broken-the-layout-of-the-header.txt")
|
||||
.assert()
|
||||
.success()
|
||||
.stdout(
|
||||
"\
|
||||
──────────
|
||||
File: this
|
||||
-file-path
|
||||
-is-really
|
||||
-long-and-
|
||||
would-have
|
||||
-broken-th
|
||||
e-layout-o
|
||||
f-the-head
|
||||
er.txt
|
||||
──────────
|
||||
The header
|
||||
is not br
|
||||
oken
|
||||
──────────
|
||||
",
|
||||
)
|
||||
.stderr("");
|
||||
}
|
||||
|
||||
#[test]
|
||||
#[cfg(feature = "git")] // Expected output assumes git is enabled
|
||||
fn header_default() {
|
||||
@@ -1876,6 +1945,62 @@ fn ansi_passthrough_emit() {
|
||||
}
|
||||
}
|
||||
|
||||
// Ensure that a simple ANSI sequence passthrough is emitted properly on wrapped lines.
|
||||
// This also helps ensure that escape sequences are counted as part of the visible characters when wrapping.
|
||||
#[test]
|
||||
fn ansi_sgr_emitted_when_wrapped() {
|
||||
bat()
|
||||
.arg("--paging=never")
|
||||
.arg("--color=never")
|
||||
.arg("--terminal-width=20")
|
||||
.arg("--wrap=character")
|
||||
.arg("--decorations=always")
|
||||
.arg("--style=plain")
|
||||
.write_stdin("\x1B[33mColor...............Also color.\n")
|
||||
.assert()
|
||||
.success()
|
||||
.stdout("\x1B[33m\x1B[33mColor...............\n\x1B[33mAlso color.\n")
|
||||
// FIXME: ~~~~~~~~ should not be emitted twice.
|
||||
.stderr("");
|
||||
}
|
||||
|
||||
// Ensure that a simple ANSI sequence passthrough is emitted properly on wrapped lines.
|
||||
// This also helps ensure that escape sequences are counted as part of the visible characters when wrapping.
|
||||
#[test]
|
||||
fn ansi_hyperlink_emitted_when_wrapped() {
|
||||
bat()
|
||||
.arg("--paging=never")
|
||||
.arg("--color=never")
|
||||
.arg("--terminal-width=20")
|
||||
.arg("--wrap=character")
|
||||
.arg("--decorations=always")
|
||||
.arg("--style=plain")
|
||||
.write_stdin("\x1B]8;;http://example.com/\x1B\\Hyperlinks..........Wrap across lines.\n")
|
||||
.assert()
|
||||
.success()
|
||||
.stdout("\x1B]8;;http://example.com/\x1B\\\x1B]8;;http://example.com/\x1B\\Hyperlinks..........\x1B]8;;\x1B\\\n\x1B]8;;http://example.com/\x1B\\Wrap across lines.\n")
|
||||
// FIXME: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ should not be emitted twice.
|
||||
.stderr("");
|
||||
}
|
||||
|
||||
// Ensure that multiple ANSI sequence SGR attributes are combined when emitted on wrapped lines.
|
||||
#[test]
|
||||
fn ansi_sgr_joins_attributes_when_wrapped() {
|
||||
bat()
|
||||
.arg("--paging=never")
|
||||
.arg("--color=never")
|
||||
.arg("--terminal-width=20")
|
||||
.arg("--wrap=character")
|
||||
.arg("--decorations=always")
|
||||
.arg("--style=plain")
|
||||
.write_stdin("\x1B[33mColor. \x1B[1mBold.........Also bold and color.\n")
|
||||
.assert()
|
||||
.success()
|
||||
.stdout("\x1B[33m\x1B[33mColor. \x1B[1m\x1B[33m\x1B[1mBold.........\n\x1B[33m\x1B[1mAlso bold and color.\n")
|
||||
// FIXME: ~~~~~~~~ ~~~~~~~~~~~~~~~ should not be emitted twice.
|
||||
.stderr("");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn ignored_suffix_arg() {
|
||||
bat()
|
||||
|
Reference in New Issue
Block a user