]> git.proxmox.com Git - libgit2.git/blob - tests-clar/diff/diff_helpers.c
Merge remote-tracking branch 'scottjg/fix-mingw32' into development
[libgit2.git] / tests-clar / diff / diff_helpers.c
1 #include "clar_libgit2.h"
2 #include "diff_helpers.h"
3
4 git_tree *resolve_commit_oid_to_tree(
5 git_repository *repo,
6 const char *partial_oid)
7 {
8 unsigned int len = (unsigned int)strlen(partial_oid);
9 git_oid oid;
10 git_object *obj = NULL;
11 git_tree *tree = NULL;
12
13 if (git_oid_fromstrn(&oid, partial_oid, len) == 0)
14 git_object_lookup_prefix(&obj, repo, &oid, len, GIT_OBJ_ANY);
15 cl_assert(obj);
16 if (git_object_type(obj) == GIT_OBJ_TREE)
17 return (git_tree *)obj;
18 cl_assert(git_object_type(obj) == GIT_OBJ_COMMIT);
19 cl_git_pass(git_commit_tree(&tree, (git_commit *)obj));
20 git_object_free(obj);
21 return tree;
22 }
23
24 int diff_file_fn(
25 void *cb_data,
26 git_diff_delta *delta,
27 float progress)
28 {
29 diff_expects *e = cb_data;
30
31 GIT_UNUSED(progress);
32
33 e->files++;
34 switch (delta->status) {
35 case GIT_DELTA_ADDED: e->file_adds++; break;
36 case GIT_DELTA_DELETED: e->file_dels++; break;
37 case GIT_DELTA_MODIFIED: e->file_mods++; break;
38 case GIT_DELTA_IGNORED: e->file_ignored++; break;
39 case GIT_DELTA_UNTRACKED: e->file_untracked++; break;
40 default: break;
41 }
42 return 0;
43 }
44
45 int diff_hunk_fn(
46 void *cb_data,
47 git_diff_delta *delta,
48 git_diff_range *range,
49 const char *header,
50 size_t header_len)
51 {
52 diff_expects *e = cb_data;
53
54 GIT_UNUSED(delta);
55 GIT_UNUSED(header);
56 GIT_UNUSED(header_len);
57
58 e->hunks++;
59 e->hunk_old_lines += range->old_lines;
60 e->hunk_new_lines += range->new_lines;
61 return 0;
62 }
63
64 int diff_line_fn(
65 void *cb_data,
66 git_diff_delta *delta,
67 git_diff_range *range,
68 char line_origin,
69 const char *content,
70 size_t content_len)
71 {
72 diff_expects *e = cb_data;
73
74 GIT_UNUSED(delta);
75 GIT_UNUSED(range);
76 GIT_UNUSED(content);
77 GIT_UNUSED(content_len);
78
79 e->lines++;
80 switch (line_origin) {
81 case GIT_DIFF_LINE_CONTEXT:
82 e->line_ctxt++;
83 break;
84 case GIT_DIFF_LINE_ADDITION:
85 case GIT_DIFF_LINE_ADD_EOFNL:
86 e->line_adds++;
87 break;
88 case GIT_DIFF_LINE_DELETION:
89 case GIT_DIFF_LINE_DEL_EOFNL:
90 e->line_dels++;
91 break;
92 default:
93 break;
94 }
95 return 0;
96 }