diff options
-rw-r--r-- | src/patch_parse.c | 1 | ||||
-rw-r--r-- | tests/diff/parse.c | 21 |
2 files changed, 22 insertions, 0 deletions
diff --git a/src/patch_parse.c b/src/patch_parse.c index 2f0b2570d..fad892d8a 100644 --- a/src/patch_parse.c +++ b/src/patch_parse.c @@ -439,6 +439,7 @@ static const parse_header_transition transitions[] = { /* Next patch */ { "diff --git " , STATE_END, 0, NULL }, { "@@ -" , STATE_END, 0, NULL }, + { "-- " , STATE_END, 0, NULL }, }; static int parse_header_git( diff --git a/tests/diff/parse.c b/tests/diff/parse.c index acb6eb8a5..dc2ceefec 100644 --- a/tests/diff/parse.c +++ b/tests/diff/parse.c @@ -57,6 +57,27 @@ static void test_parse_invalid_diff(const char *invalid_diff) git_buf_free(&buf); } +void test_diff_parse__exact_rename(void) +{ + const char *content = + "---\n" + " old_name.c => new_name.c | 0\n" + " 1 file changed, 0 insertions(+), 0 deletions(-)\n" + " rename old_name.c => new_name.c (100%)\n" + "\n" + "diff --git a/old_name.c b/new_name.c\n" + "similarity index 100%\n" + "rename from old_name.c\n" + "rename to new_name.c\n" + "-- \n" + "2.9.3\n"; + git_diff *diff; + + cl_git_pass(git_diff_from_buffer( + &diff, content, strlen(content))); + git_diff_free(diff); +} + void test_diff_parse__invalid_patches_fails(void) { test_parse_invalid_diff(PATCH_CORRUPT_MISSING_NEW_FILE); |