diff options
author | Jason Haslam <jason@scitools.com> | 2017-04-11 14:41:57 -0600 |
---|---|---|
committer | Edward Thomson <ethomson@edwardthomson.com> | 2018-11-05 15:53:59 +0000 |
commit | 620ac9c2f32d4ec6bf9c864abc5a95fd4b9af946 (patch) | |
tree | eb7d91d47c39d97d93d9f66eeb97c94d7cc9f3fd /tests/apply | |
parent | 7263057269ee7131093046205abfcf5938a59ebf (diff) | |
download | libgit2-620ac9c2f32d4ec6bf9c864abc5a95fd4b9af946.tar.gz |
patch: add tests for aborting hunk callback
Diffstat (limited to 'tests/apply')
-rw-r--r-- | tests/apply/partial.c | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/tests/apply/partial.c b/tests/apply/partial.c index bdbf35a7f..243dccf0f 100644 --- a/tests/apply/partial.c +++ b/tests/apply/partial.c @@ -46,6 +46,33 @@ static int skip_change( return (hunk->new_lines == hunk->old_lines) ? 1 : 0; } +static int abort_addition( + const git_diff_hunk *hunk, + void *payload) +{ + GIT_UNUSED(payload); + + return (hunk->new_lines > hunk->old_lines) ? GIT_EUSER : 0; +} + +static int abort_deletion( + const git_diff_hunk *hunk, + void *payload) +{ + GIT_UNUSED(payload); + + return (hunk->new_lines < hunk->old_lines) ? GIT_EUSER : 0; +} + +static int abort_change( + const git_diff_hunk *hunk, + void *payload) +{ + GIT_UNUSED(payload); + + return (hunk->new_lines == hunk->old_lines) ? GIT_EUSER : 0; +} + static int apply_buf( const char *old, const char *oldname, @@ -103,6 +130,17 @@ void test_apply_partial__prepend_and_change_nocontext_skip_addition(void) FILE_CHANGE_MIDDLE, &diff_opts, skip_addition, NULL)); } +void test_apply_partial__prepend_and_change_nocontext_abort_addition(void) +{ + git_diff_options diff_opts = GIT_DIFF_OPTIONS_INIT; + diff_opts.context_lines = 0; + + cl_git_fail(apply_buf( + FILE_ORIGINAL, "file.txt", + FILE_PREPEND_AND_CHANGE, "file.txt", + FILE_ORIGINAL, &diff_opts, abort_addition, NULL)); +} + void test_apply_partial__prepend_and_change_skip_change(void) { cl_git_pass(apply_buf( @@ -122,6 +160,17 @@ void test_apply_partial__prepend_and_change_nocontext_skip_change(void) FILE_PREPEND, &diff_opts, skip_change, NULL)); } +void test_apply_partial__prepend_and_change_nocontext_abort_change(void) +{ + git_diff_options diff_opts = GIT_DIFF_OPTIONS_INIT; + diff_opts.context_lines = 0; + + cl_git_fail(apply_buf( + FILE_ORIGINAL, "file.txt", + FILE_PREPEND_AND_CHANGE, "file.txt", + FILE_PREPEND, &diff_opts, abort_change, NULL)); +} + void test_apply_partial__delete_and_change_skip_deletion(void) { cl_git_pass(apply_buf( @@ -141,6 +190,17 @@ void test_apply_partial__delete_and_change_nocontext_skip_deletion(void) FILE_CHANGE_MIDDLE, &diff_opts, skip_deletion, NULL)); } +void test_apply_partial__delete_and_change_nocontext_abort_deletion(void) +{ + git_diff_options diff_opts = GIT_DIFF_OPTIONS_INIT; + diff_opts.context_lines = 0; + + cl_git_fail(apply_buf( + FILE_ORIGINAL, "file.txt", + FILE_DELETE_AND_CHANGE, "file.txt", + FILE_ORIGINAL, &diff_opts, abort_deletion, NULL)); +} + void test_apply_partial__delete_and_change_skip_change(void) { cl_git_pass(apply_buf( @@ -159,3 +219,14 @@ void test_apply_partial__delete_and_change_nocontext_skip_change(void) FILE_DELETE_AND_CHANGE, "file.txt", FILE_DELETE_FIRSTLINE, &diff_opts, skip_change, NULL)); } + +void test_apply_partial__delete_and_change_nocontext_abort_change(void) +{ + git_diff_options diff_opts = GIT_DIFF_OPTIONS_INIT; + diff_opts.context_lines = 0; + + cl_git_fail(apply_buf( + FILE_ORIGINAL, "file.txt", + FILE_DELETE_AND_CHANGE, "file.txt", + FILE_DELETE_FIRSTLINE, &diff_opts, abort_change, NULL)); +} |