diff --git a/src/paint.rs b/src/paint.rs index aaa53e50a..8ddd3bb4e 100644 --- a/src/paint.rs +++ b/src/paint.rs @@ -261,7 +261,9 @@ impl<'p> Painter<'p> { line.push_str( #[allow(clippy::unnecessary_to_owned)] &fill_style - .paint(" ".repeat(config.available_terminal_width - text_width)) + .paint( + " ".repeat(config.available_terminal_width.saturating_sub(text_width)), + ) .to_string(), ); } else if line_is_empty { diff --git a/src/tests/test_example_diffs.rs b/src/tests/test_example_diffs.rs index c91c8bd52..fe81aaa00 100644 --- a/src/tests/test_example_diffs.rs +++ b/src/tests/test_example_diffs.rs @@ -2137,6 +2137,30 @@ src/align.rs:71: impl<'a> Alignment<'a> { │ "###); } + #[test] + fn test_long_line_underflow() { + let output = DeltaTest::with_args(&["--raw", "--width" , "111", "--zero-style", "syntax #FFFFFF"]).with_input(GIT_DIFF_LONG_LINE).skip_header(); + + assert_snapshot!(output, @r###" + diff --git a/foobar b/foobar + index 185a33cd5b..123f893935 100755 + --- a/foobar + +++ b/foobar + @@ -14,6 +14,11 @@ function UNDERFLOW_EXEC() { + XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX + } + + + + + + +echo "=== VALIDATE UNDERFLOW" + +/usr/local/bin/check_underflow + + + # this is an example of the underflow error + echo "=== UNDERFLOW_EXEC" + UNDERFLOW_EXEC -i foobar.yaml + "###); + } + const GIT_DIFF_SINGLE_HUNK: &str = "\ commit 94907c0f136f46dc46ffae2dc92dca9af7eb7c2e Author: Dan Davison @@ -3125,4 +3149,30 @@ index 53f98b6..14d6caa 100644 三æäöø€ÆÄÖ〇Øß三 ¶ "; + + const GIT_DIFF_LONG_LINE: &str = r#"\ +commit XXXXXXXXXXXXXXXXXXXXXXXXX +Author: LUCIANO FURTADO +Date: Tue Jun 25 14:07:31 2024 -0500 + + Ref: https://github.com/dandavison/delta/issues/1760 + +diff --git a/foobar b/foobar +index 185a33cd5b..123f893935 100755 +--- a/foobar ++++ b/foobar +@@ -14,6 +14,11 @@ function UNDERFLOW_EXEC() { + XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX + } + ++ ++ ++echo "=== VALIDATE UNDERFLOW" ++/usr/local/bin/check_underflow ++ + # this is an example of the underflow error + echo "=== UNDERFLOW_EXEC" + UNDERFLOW_EXEC -i foobar.yaml + +"#; }