summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMaxim Baz <github@maximbaz.com>2021-07-08 18:09:56 +0200
committerGitHub <noreply@github.com>2021-07-08 17:09:56 +0100
commit1315cd71baefc0f161ce62b6debb22b24e37bf61 (patch)
treece1552c5bdf9ebd0804335c7802995998f20d456
parent2da444a1954f63e6da4bf638fc28eb4a0aa3fccc (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.rs56
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, "");
+ }
+}