diff options
Diffstat (limited to 'tests-clar/diff/patch.c')
-rw-r--r-- | tests-clar/diff/patch.c | 44 |
1 files changed, 37 insertions, 7 deletions
diff --git a/tests-clar/diff/patch.c b/tests-clar/diff/patch.c index e2576277f..3da9ce82b 100644 --- a/tests-clar/diff/patch.c +++ b/tests-clar/diff/patch.c @@ -13,26 +13,56 @@ void test_diff_patch__cleanup(void) cl_git_sandbox_cleanup(); } -#define EXPECTED_OUTPUT "diff --git a/subdir.txt b/subdir.txt\n" \ +#define EXPECTED_HEADER "diff --git a/subdir.txt b/subdir.txt\n" \ "deleted file mode 100644\n" \ "index e8ee89e..0000000\n" \ "--- a/subdir.txt\n" \ "+++ /dev/null\n" +#define EXPECTED_HUNK "@@ -1,2 +0,0 @@\n" + static int check_removal_cb( void *cb_data, + git_diff_delta *delta, + git_diff_range *range, char line_origin, - const char *formatted_output) + const char *formatted_output, + size_t output_len) { GIT_UNUSED(cb_data); - if (line_origin != 'F') - return 0; + switch (line_origin) { + case GIT_DIFF_LINE_FILE_HDR: + cl_assert_equal_s(EXPECTED_HEADER, formatted_output); + cl_assert(range == NULL); + goto check_delta; + + case GIT_DIFF_LINE_HUNK_HDR: + cl_assert_equal_s(EXPECTED_HUNK, formatted_output); + /* Fall through */ + + case GIT_DIFF_LINE_CONTEXT: + case GIT_DIFF_LINE_DELETION: + goto check_range; + + default: + /* unexpected code path */ + return -1; + } + +check_range: + cl_assert(range != NULL); + cl_assert_equal_i(1, range->old_start); + cl_assert_equal_i(2, range->old_lines); + cl_assert_equal_i(0, range->new_start); + cl_assert_equal_i(0, range->new_lines); - if (strcmp(EXPECTED_OUTPUT, formatted_output) == 0) - return 0; +check_delta: + cl_assert_equal_s("subdir.txt", delta->old.path); + cl_assert_equal_s("subdir.txt", delta->new.path); + cl_assert_equal_i(GIT_DELTA_DELETED, delta->status); - return -1; + return 0; } void test_diff_patch__can_properly_display_the_removal_of_a_file(void) |