From 1315cd71baefc0f161ce62b6debb22b24e37bf61 Mon Sep 17 00:00:00 2001 From: Maxim Baz Date: Thu, 8 Jul 2021 18:09:56 +0200 Subject: Do not generate hyperlinks for hunks with no file or line number (#650) * Do not generate hyperlinks for hunks with no file or line number * Add some tests, apply suggestion --- src/hunk_header.rs | 56 +++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 55 insertions(+), 1 deletion(-) diff --git a/src/hunk_header.rs b/src/hunk_header.rs index fa9f02c5..5563030e 100644 --- a/src/hunk_header.rs +++ b/src/hunk_header.rs @@ -117,7 +117,7 @@ fn get_painted_file_with_line_number( ) } let file_with_line_number = ansi_term::ANSIStrings(&file_with_line_number).to_string(); - if config.hyperlinks { + if config.hyperlinks && !file_with_line_number.is_empty() { features::hyperlinks::format_osc8_file_hyperlink( plus_file, Some(plus_line_number), @@ -164,3 +164,57 @@ fn write_to_output_buffer( painter.output_buffer.pop(); // trim newline } } + +#[cfg(test)] +pub mod tests { + use super::*; + use crate::tests::integration_test_utils::integration_test_utils; + + #[test] + fn test_get_painted_file_with_line_number_default() { + let cfg = integration_test_utils::make_config_from_args(&[]); + + let result = get_painted_file_with_line_number(&vec![(3, 4)], "some-file", &cfg); + + assert_eq!(result, "\u{1b}[34m3\u{1b}[0m"); + } + + #[test] + fn test_get_painted_file_with_line_number_hyperlinks() { + let cfg = integration_test_utils::make_config_from_args(&["--features", "hyperlinks"]); + + let result = get_painted_file_with_line_number(&vec![(3, 4)], "some-file", &cfg); + + assert_eq!(result, "some-file"); + } + + #[test] + fn test_get_painted_file_with_line_number_empty() { + let cfg = integration_test_utils::make_config_from_args(&[ + "--hunk-header-style", + "syntax bold", + "--hunk-header-decoration-style", + "omit", + ]); + + let result = get_painted_file_with_line_number(&vec![(3, 4)], "some-file", &cfg); + + assert_eq!(result, ""); + } + + #[test] + fn test_get_painted_file_with_line_number_empty_hyperlinks() { + let cfg = integration_test_utils::make_config_from_args(&[ + "--hunk-header-style", + "syntax bold", + "--hunk-header-decoration-style", + "omit", + "--features", + "hyperlinks", + ]); + + let result = get_painted_file_with_line_number(&vec![(3, 4)], "some-file", &cfg); + + assert_eq!(result, ""); + } +} -- cgit v1.2.3