summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJason Haslam <jason@scitools.com>2017-04-11 14:41:57 -0600
committerEdward Thomson <ethomson@edwardthomson.com>2018-11-05 15:53:59 +0000
commit620ac9c2f32d4ec6bf9c864abc5a95fd4b9af946 (patch)
treeeb7d91d47c39d97d93d9f66eeb97c94d7cc9f3fd
parent7263057269ee7131093046205abfcf5938a59ebf (diff)
downloadlibgit2-620ac9c2f32d4ec6bf9c864abc5a95fd4b9af946.tar.gz
patch: add tests for aborting hunk callback
-rw-r--r--tests/apply/partial.c71
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));
+}