Commit 5e5a9cce by Max Kostyukevich Committed by Patrick Steinhardt

apply: Test for EOFNL mishandling when several hunks are processed

Introduce an unit test to validate that git_apply__patch() properly
handles EOFNL changes in case of patches with several hunks.
parent 0126e3fc
...@@ -131,6 +131,17 @@ void test_apply_fromdiff__lastline(void) ...@@ -131,6 +131,17 @@ void test_apply_fromdiff__lastline(void)
PATCH_ORIGINAL_TO_CHANGE_LASTLINE, NULL)); PATCH_ORIGINAL_TO_CHANGE_LASTLINE, NULL));
} }
void test_apply_fromdiff__change_middle_and_lastline_nocontext(void)
{
git_diff_options diff_opts = GIT_DIFF_OPTIONS_INIT;
diff_opts.context_lines = 0;
cl_git_pass(apply_buf(
FILE_ORIGINAL, "file.txt",
FILE_CHANGE_MIDDLE_AND_LASTLINE, "file.txt",
PATCH_ORIGINAL_TO_CHANGE_MIDDLE_AND_LASTLINE_NOCONTEXT, &diff_opts));
}
void test_apply_fromdiff__prepend(void) void test_apply_fromdiff__prepend(void)
{ {
cl_git_pass(apply_buf( cl_git_pass(apply_buf(
......
...@@ -263,6 +263,32 @@ ...@@ -263,6 +263,32 @@
"-(this line is changed)\n" \ "-(this line is changed)\n" \
"+(THIS line is changed!)\n" "+(THIS line is changed!)\n"
/* A change in the middle and a deletion of the newline at the end of the file */
#define FILE_CHANGE_MIDDLE_AND_LASTLINE \
"hey!\n" \
"this is some context!\n" \
"around some lines\n" \
"that will change\n" \
"yes it is!\n" \
"(THIS line is changed!)\n" \
"and this\n" \
"is additional context\n" \
"BELOW it! - (THIS line is changed!)"
#define PATCH_ORIGINAL_TO_CHANGE_MIDDLE_AND_LASTLINE_NOCONTEXT \
"diff --git a/file.txt b/file.txt\n" \
"index 9432026..e05d36c 100644\n" \
"--- a/file.txt\n" \
"+++ b/file.txt\n" \
"@@ -6 +6 @@ yes it is!\n" \
"-(this line is changed)\n" \
"+(THIS line is changed!)\n" \
"@@ -9 +9 @@ is additional context\n" \
"-below it!\n" \
"+BELOW it! - (THIS line is changed!)\n" \
"\\ No newline at end of file\n"
/* A deletion at the beginning of the file and a change in the middle */ /* A deletion at the beginning of the file and a change in the middle */
#define FILE_DELETE_AND_CHANGE \ #define FILE_DELETE_AND_CHANGE \
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment