]>
git.proxmox.com Git - libgit2.git/blob - tests/blame/buffer.c
1 #include "blame_helpers.h"
3 static git_repository
*g_repo
;
4 static git_blame
*g_fileblame
, *g_bufferblame
;
6 void test_blame_buffer__initialize(void)
8 cl_git_pass(git_repository_open(&g_repo
, cl_fixture("blametest.git")));
9 cl_git_pass(git_blame_file(&g_fileblame
, g_repo
, "b.txt", NULL
));
13 void test_blame_buffer__cleanup(void)
15 git_blame_free(g_fileblame
);
16 git_blame_free(g_bufferblame
);
17 git_repository_free(g_repo
);
20 void test_blame_buffer__index(void)
22 const git_blame_hunk
*hunk
;
23 const char *buffer
= "Hello\nWorld!";
26 * We need to open a different file from the ones used in other tests. Close
27 * the one opened in test_blame_buffer__initialize() to avoid a leak.
29 git_blame_free(g_fileblame
);
31 cl_git_pass(git_blame_file(&g_fileblame
, g_repo
, "file.txt", NULL
));
33 cl_git_pass(git_blame_buffer(&g_bufferblame
, g_fileblame
, buffer
, strlen(buffer
)));
34 cl_assert_equal_i(2, git_blame_get_hunk_count(g_bufferblame
));
36 check_blame_hunk_index(g_repo
, g_bufferblame
, 0, 1, 1, 0, "836bc00b", "file.txt");
37 hunk
= git_blame_get_hunk_byline(g_bufferblame
, 1);
39 cl_assert_equal_s("lhchavez", hunk
->final_signature
->name
);
40 check_blame_hunk_index(g_repo
, g_bufferblame
, 1, 2, 1, 0, "00000000", "file.txt");
41 hunk
= git_blame_get_hunk_byline(g_bufferblame
, 2);
43 cl_assert(hunk
->final_signature
== NULL
);
46 void test_blame_buffer__added_line(void)
48 const git_blame_hunk
*hunk
;
50 const char *buffer
= "\
51 EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE\n\
52 EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE\n\
53 EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE\n\
54 EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE\n\
57 BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB\n\
58 BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB\n\
59 BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB\n\
60 BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB\n\
62 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC\n\
63 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC\n\
64 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC\n\
65 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC\n\n";
67 cl_git_pass(git_blame_buffer(&g_bufferblame
, g_fileblame
, buffer
, strlen(buffer
)));
68 cl_assert_equal_i(5, git_blame_get_hunk_count(g_bufferblame
));
69 check_blame_hunk_index(g_repo
, g_bufferblame
, 2, 6, 1, 0, "000000", "b.txt");
71 hunk
= git_blame_get_hunk_byline(g_bufferblame
, 16);
73 cl_assert_equal_s("Ben Straub", hunk
->final_signature
->name
);
76 void test_blame_buffer__deleted_line(void)
78 const char *buffer
= "\
79 EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE\n\
80 EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE\n\
81 EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE\n\
82 EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE\n\
84 BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB\n\
85 BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB\n\
86 BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB\n\
88 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC\n\
89 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC\n\
90 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC\n\
91 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC\n\n";
93 cl_git_pass(git_blame_buffer(&g_bufferblame
, g_fileblame
, buffer
, strlen(buffer
)));
94 check_blame_hunk_index(g_repo
, g_bufferblame
, 2, 6, 3, 0, "63d671eb", "b.txt");
95 check_blame_hunk_index(g_repo
, g_bufferblame
, 3, 9, 1, 0, "63d671eb", "b.txt");
96 check_blame_hunk_index(g_repo
, g_bufferblame
, 4, 10, 5, 0, "aa06ecca", "b.txt");
99 void test_blame_buffer__add_splits_hunk(void)
101 const char *buffer
= "\
102 EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE\n\
103 EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE\n\
104 EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE\n\
105 EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE\n\
107 BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB\n\
108 BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB\n\
110 BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB\n\
111 BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB\n\
113 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC\n\
114 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC\n\
115 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC\n\
116 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC\n\n";
118 cl_git_pass(git_blame_buffer(&g_bufferblame
, g_fileblame
, buffer
, strlen(buffer
)));
119 check_blame_hunk_index(g_repo
, g_bufferblame
, 2, 6, 2, 0, "63d671eb", "b.txt");
120 check_blame_hunk_index(g_repo
, g_bufferblame
, 3, 8, 1, 0, "00000000", "b.txt");
121 check_blame_hunk_index(g_repo
, g_bufferblame
, 4, 9, 3, 0, "63d671eb", "b.txt");
124 void test_blame_buffer__delete_crosses_hunk_boundary(void)
126 const char *buffer
= "\
127 EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE\n\
128 EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE\n\
129 EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE\n\
130 EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE\n\
132 BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB\n\
133 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC\n\n";
135 cl_git_pass(git_blame_buffer(&g_bufferblame
, g_fileblame
, buffer
, strlen(buffer
)));
136 check_blame_hunk_index(g_repo
, g_bufferblame
, 2, 6, 1, 0, "63d671eb", "b.txt");
137 check_blame_hunk_index(g_repo
, g_bufferblame
, 3, 7, 2, 0, "aa06ecca", "b.txt");
140 void test_blame_buffer__replace_line(void)
142 const char *buffer
= "\
143 EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE\n\
144 EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE\n\
145 EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE\n\
146 EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE\n\
148 BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB\n\
150 BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB\n\
151 BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB\n\
153 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC\n\
154 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC\n\
155 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC\n\
156 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC\n\n";
158 cl_git_pass(git_blame_buffer(&g_bufferblame
, g_fileblame
, buffer
, strlen(buffer
)));
159 check_blame_hunk_index(g_repo
, g_bufferblame
, 2, 6, 1, 0, "63d671eb", "b.txt");
160 check_blame_hunk_index(g_repo
, g_bufferblame
, 3, 7, 1, 0, "00000000", "b.txt");
161 check_blame_hunk_index(g_repo
, g_bufferblame
, 4, 8, 3, 0, "63d671eb", "b.txt");
164 void test_blame_buffer__add_lines_at_end(void)
166 const char *buffer
= "\
167 EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE\n\
168 EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE\n\
169 EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE\n\
170 EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE\n\
172 BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB\n\
173 BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB\n\
174 BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB\n\
175 BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB\n\
177 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC\n\
178 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC\n\
179 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC\n\
180 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC\n\
184 cl_git_pass(git_blame_buffer(&g_bufferblame
, g_fileblame
, buffer
, strlen(buffer
)));
186 cl_assert_equal_i(5, git_blame_get_hunk_count(g_bufferblame
));
187 check_blame_hunk_index(g_repo
, g_bufferblame
, 0, 1, 4, 0, "da237394", "b.txt");
188 check_blame_hunk_index(g_repo
, g_bufferblame
, 1, 5, 1, 1, "b99f7ac0", "b.txt");
189 check_blame_hunk_index(g_repo
, g_bufferblame
, 2, 6, 5, 0, "63d671eb", "b.txt");
190 check_blame_hunk_index(g_repo
, g_bufferblame
, 3, 11, 5, 0, "aa06ecca", "b.txt");
191 check_blame_hunk_index(g_repo
, g_bufferblame
, 4, 16, 2, 0, "00000000", "b.txt");