From ad812b8ded049e7f6c60f99ab3afb2550635908b Mon Sep 17 00:00:00 2001 From: LUCIANO FURTADO Date: Wed, 17 Jul 2024 08:07:30 -0500 Subject: [PATCH] avoid negative repeat_count fixes #1760 --- src/paint.rs | 4 ++- src/tests/test_example_diffs.rs | 50 +++++++++++++++++++++++++++++++++ 2 files changed, 53 insertions(+), 1 deletion(-) diff --git a/src/paint.rs b/src/paint.rs index 4b487ea38..cd5c9ebde 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 9ee3ca5bb..781266bc3 100644 --- a/src/tests/test_example_diffs.rs +++ b/src/tests/test_example_diffs.rs @@ -1994,6 +1994,30 @@ src/align.rs:71: impl<'a> Alignment<'a> { │ .expect_after_header("#partial\n\nremoved: a"); } + #[test] + fn test_long_line_underflow() { + let output = DeltaTest::with_args(&["--raw"]).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 → + } + + + + + + +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 @@ -2965,4 +2989,30 @@ diff --git a a new file mode 100644 index 0000000..e69de29 "; + + 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 + +"#; }