diff options
| author | Patrick Steinhardt <ps@pks.im> | 2019-10-10 12:34:45 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2019-10-10 12:34:45 +0200 |
| commit | 6716e2f3aca9bbe07478a4bd7bc79f6d24753472 (patch) | |
| tree | fdbf7d889657f3bdfbeb092a16258f88889108ca | |
| parent | f04a58b00c1a350e2cd90bddcdaa7865183c9d2f (diff) | |
| parent | b61810bf1ff1007bc0a5d8e47362a735f2ff1f0b (diff) | |
| download | libgit2-6716e2f3aca9bbe07478a4bd7bc79f6d24753472.tar.gz | |
Merge pull request #5248 from dlax/parse-patch-empty-files
patch_parse: handle patches with new empty files
| -rw-r--r-- | src/patch_parse.c | 1 | ||||
| -rw-r--r-- | tests/diff/parse.c | 20 |
2 files changed, 21 insertions, 0 deletions
diff --git a/src/patch_parse.c b/src/patch_parse.c index 84953ee14..51c4bb200 100644 --- a/src/patch_parse.c +++ b/src/patch_parse.c @@ -406,6 +406,7 @@ static const parse_header_transition transitions[] = { /* Next patch */ { "diff --git " , STATE_END, 0, NULL }, { "@@ -" , STATE_END, 0, NULL }, + { "-- " , STATE_INDEX, 0, NULL }, { "-- " , STATE_END, 0, NULL }, }; diff --git a/tests/diff/parse.c b/tests/diff/parse.c index a067861de..7d9f4b2e5 100644 --- a/tests/diff/parse.c +++ b/tests/diff/parse.c @@ -78,6 +78,26 @@ void test_diff_parse__exact_rename(void) git_diff_free(diff); } +void test_diff_parse__empty_file(void) +{ + const char *content = + "---\n" + " file | 0\n" + " 1 file changed, 0 insertions(+), 0 deletions(-)\n" + " created mode 100644 file\n" + "\n" + "diff --git a/file b/file\n" + "new file mode 100644\n" + "index 0000000..e69de29\n" + "-- \n" + "2.20.1\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); |
