diff options
author | Maxim Baz <github@maximbaz.com> | 2021-07-08 18:09:56 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-07-08 17:09:56 +0100 |
commit | 1315cd71baefc0f161ce62b6debb22b24e37bf61 (patch) | |
tree | ce1552c5bdf9ebd0804335c7802995998f20d456 | |
parent | 2da444a1954f63e6da4bf638fc28eb4a0aa3fccc (diff) |
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
-rw-r--r-- | src/hunk_header.rs | 56 |
1 files changed, 55 insertions, 1 deletions
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, ""); + } +} |