summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/handlers/hunk_header.rs22
1 files changed, 16 insertions, 6 deletions
diff --git a/src/handlers/hunk_header.rs b/src/handlers/hunk_header.rs
index 34f6d86..9ad2cb3 100644
--- a/src/handlers/hunk_header.rs
+++ b/src/handlers/hunk_header.rs
@@ -235,7 +235,7 @@ lazy_static! {
fn parse_hunk_header(line: &str) -> Option<ParsedHunkHeader> {
if let Some(caps) = HUNK_HEADER_REGEX.captures(line) {
let file_coordinates = &caps[1];
- let line_numbers_and_hunk_lengths = HUNK_HEADER_FILE_COORDINATE_REGEX
+ let line_numbers_and_hunk_lengths: Vec<(usize, usize)> = HUNK_HEADER_FILE_COORDINATE_REGEX
.captures_iter(file_coordinates)
.map(|caps| {
(
@@ -249,11 +249,15 @@ fn parse_hunk_header(line: &str) -> Option<ParsedHunkHeader> {
)
})
.collect();
- let code_fragment = caps[2].to_string();
- Some(ParsedHunkHeader {
- code_fragment,
- line_numbers_and_hunk_lengths,
- })
+ if line_numbers_and_hunk_lengths.is_empty() {
+ None
+ } else {
+ let code_fragment = caps[2].to_string();
+ Some(ParsedHunkHeader {
+ code_fragment,
+ line_numbers_and_hunk_lengths,
+ })
+ }
} else {
None
}
@@ -457,6 +461,12 @@ pub mod tests {
}
#[test]
+ fn test_parse_hunk_header_with_no_hunk_lengths() {
+ let result = parse_hunk_header("@@ @@\n");
+ assert_eq!(result, None);
+ }
+
+ #[test]
fn test_parse_hunk_header_added_file() {
let ParsedHunkHeader {
code_fragment,