1
// TortoiseGit - a Windows shell extension for easy version control
3 // Copyright (C) 2015 - TortoiseGit
5 // This program is free software; you can redistribute it and/or
6 // modify it under the terms of the GNU General Public License
7 // as published by the Free Software Foundation; either version 2
8 // of the License, or (at your option) any later version.
10 // This program is distributed in the hope that it will be useful,
11 // but WITHOUT ANY WARRANTY; without even the implied warranty of
12 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 // GNU General Public License for more details.
15 // You should have received a copy of the GNU General Public License
16 // along with this program; if not, write to the Free Software Foundation,
17 // 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
21 #include "RepositoryFixtures.h"
22 #include "GitRevLoglist.h"
25 class GitRevLoglistCBasicGitWithTestRepoFixture
: public CBasicGitWithTestRepoFixture
29 class GitRevLoglistCBasicGitWithTestRepoBareFixture
: public CBasicGitWithTestRepoBareFixture
33 class GitRevLoglist2CBasicGitWithTestRepoFixture
: public CBasicGitWithTestRepoFixture
37 class GitRevLoglist2CBasicGitWithTestRepoBareFixture
: public CBasicGitWithTestRepoBareFixture
41 INSTANTIATE_TEST_CASE_P(GitRevLoglist
, GitRevLoglistCBasicGitWithTestRepoFixture
, testing::Values(LIBGIT
, LIBGIT2
, LIBGIT2_ALL
));
42 INSTANTIATE_TEST_CASE_P(GitRevLoglist
, GitRevLoglistCBasicGitWithTestRepoBareFixture
, testing::Values(LIBGIT
, LIBGIT2
, LIBGIT2_ALL
));
44 INSTANTIATE_TEST_CASE_P(GitRevLoglist
, GitRevLoglist2CBasicGitWithTestRepoFixture
, testing::Values(GIT_CLI
, LIBGIT
, LIBGIT2
, LIBGIT2_ALL
));
45 INSTANTIATE_TEST_CASE_P(GitRevLoglist
, GitRevLoglist2CBasicGitWithTestRepoBareFixture
, testing::Values(GIT_CLI
, LIBGIT
, LIBGIT2
, LIBGIT2_ALL
));
47 static void SafeFetchFullInfo(CGit
* cGit
)
50 EXPECT_EQ(FALSE
, rev
.m_IsSimpleListReady
);
51 EXPECT_EQ(1, rev
.CheckAndDiff());
52 EXPECT_STREQ(_T(""), rev
.GetAuthorName());
53 EXPECT_EQ(FALSE
, rev
.m_IsSimpleListReady
);
54 EXPECT_EQ(FALSE
, rev
.m_IsFull
);
55 EXPECT_EQ(FALSE
, rev
.m_IsUpdateing
);
56 EXPECT_EQ(FALSE
, rev
.m_IsDiffFiles
);
57 EXPECT_EQ(FALSE
, rev
.m_IsCommitParsed
);
58 rev
.m_IsDiffFiles
= 1;
59 EXPECT_EQ(0, rev
.GetFiles(nullptr).GetCount());
60 EXPECT_EQ(-1, rev
.SafeFetchFullInfo(cGit
));
61 EXPECT_STREQ(_T(""), rev
.GetAuthorName());
62 EXPECT_EQ(FALSE
, rev
.m_IsSimpleListReady
);
63 EXPECT_EQ(TRUE
, rev
.m_IsUpdateing
);
64 EXPECT_EQ(FALSE
, rev
.m_IsFull
);
65 EXPECT_EQ(TRUE
, rev
.m_IsDiffFiles
);
66 EXPECT_EQ(FALSE
, rev
.m_IsCommitParsed
);
68 rev
.m_CommitHash
= _T("7c3cbfe13a929d2291a574dca45e4fd2d2ac1aa6");
69 rev
.m_IsDiffFiles
= TRUE
;
70 EXPECT_EQ(1, rev
.CheckAndDiff());
71 EXPECT_EQ(FALSE
, rev
.m_IsSimpleListReady
);
72 EXPECT_EQ(FALSE
, rev
.m_IsUpdateing
);
73 EXPECT_EQ(FALSE
, rev
.m_IsFull
);
74 EXPECT_EQ(FALSE
, rev
.m_IsCommitParsed
);
75 EXPECT_STREQ(_T(""), rev
.GetAuthorName());
76 rev
.m_IsDiffFiles
= FALSE
;
77 EXPECT_EQ(FALSE
, rev
.m_IsSimpleListReady
);
78 EXPECT_EQ(FALSE
, rev
.m_IsUpdateing
);
79 EXPECT_EQ(FALSE
, rev
.m_IsFull
);
80 EXPECT_EQ(FALSE
, rev
.m_IsDiffFiles
);
81 EXPECT_EQ(FALSE
, rev
.m_IsCommitParsed
);
82 EXPECT_EQ(0, rev
.CheckAndDiff());
83 EXPECT_STREQ(_T(""), rev
.GetAuthorName());
84 EXPECT_EQ(FALSE
, rev
.m_IsSimpleListReady
);
85 EXPECT_EQ(FALSE
, rev
.m_IsUpdateing
);
86 EXPECT_EQ(TRUE
, rev
.m_IsFull
);
87 EXPECT_EQ(TRUE
, rev
.m_IsDiffFiles
);
88 EXPECT_EQ(FALSE
, rev
.m_IsCommitParsed
);
89 EXPECT_EQ(CTGitPath::LOGACTIONS_MODIFIED
, rev
.GetAction(nullptr));
90 ASSERT_EQ(1, rev
.GetFiles(nullptr).GetCount());
92 list
= rev
.GetFiles(nullptr);
93 EXPECT_STREQ(_T("ascii.txt"), list
[0].GetGitPathString());
94 EXPECT_STREQ(_T("2"), list
[0].m_StatAdd
);
95 EXPECT_STREQ(_T("2"), list
[0].m_StatDel
);
96 EXPECT_EQ(0, list
[0].m_ParentNo
);
97 EXPECT_EQ(CTGitPath::LOGACTIONS_MODIFIED
, list
[0].m_Action
);
99 rev
.m_CommitHash
= _T("7c3cbfe13a929d2291a574dca45e4fd2d2ac1aa6");
100 rev
.m_IsUpdateing
= TRUE
; // do nothing
101 EXPECT_EQ(0, rev
.SafeFetchFullInfo(cGit
));
102 EXPECT_STREQ(_T(""), rev
.GetAuthorName());
103 EXPECT_EQ(FALSE
, rev
.m_IsSimpleListReady
);
104 EXPECT_EQ(TRUE
, rev
.m_IsUpdateing
);
105 EXPECT_EQ(FALSE
, rev
.m_IsFull
);
106 EXPECT_EQ(FALSE
, rev
.m_IsDiffFiles
);
107 EXPECT_EQ(FALSE
, rev
.m_IsCommitParsed
);
108 EXPECT_EQ(0, rev
.GetAction(nullptr));
109 EXPECT_EQ(0, rev
.GetFiles(nullptr).GetCount());
111 rev
.m_CommitHash
= _T("7c3cbfe13a929d2291a574dca45e4fd2d2ac1aa6");
112 EXPECT_EQ(0, rev
.SafeFetchFullInfo(cGit
));
113 EXPECT_STREQ(_T(""), rev
.GetAuthorName());
114 EXPECT_EQ(FALSE
, rev
.m_IsSimpleListReady
);
115 EXPECT_EQ(FALSE
, rev
.m_IsUpdateing
);
116 EXPECT_EQ(TRUE
, rev
.m_IsFull
);
117 EXPECT_EQ(FALSE
, rev
.m_IsDiffFiles
);
118 EXPECT_EQ(FALSE
, rev
.m_IsCommitParsed
);
119 EXPECT_EQ(CTGitPath::LOGACTIONS_MODIFIED
, rev
.GetAction(nullptr));
120 ASSERT_EQ(1, rev
.GetFiles(nullptr).GetCount());
121 list
= rev
.GetFiles(nullptr);
122 EXPECT_STREQ(_T("ascii.txt"), list
[0].GetGitPathString());
123 EXPECT_STREQ(_T("2"), list
[0].m_StatAdd
);
124 EXPECT_STREQ(_T("2"), list
[0].m_StatDel
);
125 EXPECT_EQ(0, list
[0].m_ParentNo
);
126 EXPECT_EQ(CTGitPath::LOGACTIONS_MODIFIED
, list
[0].m_Action
);
128 EXPECT_EQ(0, rev
.GetFiles(nullptr).GetCount());
129 rev
.m_CommitHash
= _T("dead91b4aedeaddeaddead2a56d3c473c705dead"); // non-existent commit
130 EXPECT_EQ(-1, rev
.SafeFetchFullInfo(cGit
));
131 EXPECT_EQ(FALSE
, rev
.m_IsSimpleListReady
);
132 EXPECT_EQ(TRUE
, rev
.m_IsUpdateing
);
133 EXPECT_EQ(FALSE
, rev
.m_IsFull
);
134 EXPECT_EQ(FALSE
, rev
.m_IsDiffFiles
);
135 EXPECT_EQ(FALSE
, rev
.m_IsCommitParsed
);
137 rev
.m_CommitHash
= _T("35c91b4ae2f77f4f21a7aba56d3c473c705d89e6");
138 EXPECT_EQ(0, rev
.SafeFetchFullInfo(cGit
));
139 EXPECT_EQ(CTGitPath::LOGACTIONS_MODIFIED
, rev
.GetAction(nullptr));
140 ASSERT_EQ(4, rev
.GetFiles(nullptr).GetCount());
141 list
= rev
.GetFiles(nullptr);
142 EXPECT_STREQ(_T("copy/ansi.txt"), list
[0].GetGitPathString());
143 EXPECT_STREQ(_T("1"), list
[0].m_StatAdd
);
144 EXPECT_STREQ(_T("1"), list
[0].m_StatDel
);
145 EXPECT_EQ(0, list
[0].m_ParentNo
);
146 EXPECT_EQ(CTGitPath::LOGACTIONS_MODIFIED
, list
[0].m_Action
);
147 EXPECT_STREQ(_T("copy/utf16-be-nobom.txt"), list
[1].GetGitPathString());
148 EXPECT_STREQ(_T("-"), list
[1].m_StatAdd
);
149 EXPECT_STREQ(_T("-"), list
[1].m_StatDel
);
150 EXPECT_EQ(0, list
[1].m_ParentNo
);
151 EXPECT_EQ(CTGitPath::LOGACTIONS_MODIFIED
, list
[1].m_Action
);
152 EXPECT_STREQ(_T("copy/utf8-bom.txt"), list
[2].GetGitPathString());
153 EXPECT_STREQ(_T("1"), list
[2].m_StatAdd
);
154 EXPECT_STREQ(_T("1"), list
[2].m_StatDel
);
155 EXPECT_EQ(0, list
[2].m_ParentNo
);
156 EXPECT_EQ(CTGitPath::LOGACTIONS_MODIFIED
, list
[2].m_Action
);
157 EXPECT_STREQ(_T("copy/utf8-nobom.txt"), list
[3].GetGitPathString());
158 EXPECT_STREQ(_T("1"), list
[3].m_StatAdd
);
159 EXPECT_STREQ(_T("1"), list
[3].m_StatDel
);
160 EXPECT_EQ(0, list
[3].m_ParentNo
);
161 EXPECT_EQ(CTGitPath::LOGACTIONS_MODIFIED
, list
[3].m_Action
);
163 rev
.m_CommitHash
= _T("8d1ebbcc7eeb63af10ff8bcf7712afb9fcc90b8a"); // merge commit
164 EXPECT_EQ(0, rev
.SafeFetchFullInfo(cGit
));
165 EXPECT_EQ(CTGitPath::LOGACTIONS_ADDED
, rev
.GetAction(nullptr));
166 ASSERT_EQ(1, rev
.GetFiles(nullptr).GetCount());
167 list
= rev
.GetFiles(nullptr);
168 EXPECT_STREQ(_T("newfiles3.txt"), list
[0].GetGitPathString());
169 EXPECT_STREQ(_T("1"), list
[0].m_StatAdd
);
170 EXPECT_STREQ(_T("0"), list
[0].m_StatDel
);
171 EXPECT_EQ(0, list
[0].m_ParentNo
);
172 EXPECT_EQ(CTGitPath::LOGACTIONS_ADDED
, list
[0].m_Action
);
174 rev
.m_CommitHash
= _T("18da7c332dcad0f37f9977d9176dce0b0c66f3eb"); // stash commit
175 EXPECT_EQ(0, rev
.SafeFetchFullInfo(cGit
));
176 EXPECT_EQ(CTGitPath::LOGACTIONS_MODIFIED
, rev
.GetAction(nullptr));
177 ASSERT_EQ(2, rev
.GetFiles(nullptr).GetCount());
178 list
= rev
.GetFiles(nullptr);
179 EXPECT_STREQ(_T("newfiles.txt"), list
[0].GetGitPathString());
180 EXPECT_STREQ(_T("1"), list
[0].m_StatAdd
);
181 EXPECT_STREQ(_T("1"), list
[0].m_StatDel
);
182 EXPECT_EQ(0, list
[0].m_ParentNo
);
183 EXPECT_EQ(CTGitPath::LOGACTIONS_MODIFIED
, list
[0].m_Action
);
184 EXPECT_STREQ(_T("newfiles.txt"), list
[1].GetGitPathString());
185 EXPECT_STREQ(_T("1"), list
[1].m_StatAdd
);
186 EXPECT_STREQ(_T("1"), list
[1].m_StatDel
);
187 EXPECT_EQ(1, list
[1].m_ParentNo
);
188 EXPECT_EQ(CTGitPath::LOGACTIONS_MODIFIED
, list
[1].m_Action
);
190 rev
.m_CommitHash
= _T("844309789a13614b52d5e7cbfe6350dd73d1dc72"); // root commit
191 EXPECT_EQ(0, rev
.SafeFetchFullInfo(cGit
));
192 EXPECT_EQ(CTGitPath::LOGACTIONS_ADDED
, rev
.GetAction(nullptr));
193 ASSERT_EQ(1, rev
.GetFiles(nullptr).GetCount());
194 EXPECT_STREQ(_T("ansi.txt"), rev
.GetFiles(nullptr)[0].GetGitPathString());
196 rev
.m_CommitHash
= _T("4c5c93d2a0b368bc4570d5ec02ab03b9c4334d44");
197 EXPECT_EQ(0, rev
.SafeFetchFullInfo(cGit
));
198 EXPECT_EQ(CTGitPath::LOGACTIONS_ADDED
| CTGitPath::LOGACTIONS_MODIFIED
| CTGitPath::LOGACTIONS_REPLACED
| CTGitPath::LOGACTIONS_DELETED
, rev
.GetAction(nullptr));
199 ASSERT_EQ(4, rev
.GetFiles(nullptr).GetCount());
200 list
= rev
.GetFiles(nullptr);
201 EXPECT_STREQ(_T("newfiles2 - Cöpy.txt"), list
[0].GetGitPathString());
202 EXPECT_STREQ(_T("1"), list
[0].m_StatAdd
);
203 EXPECT_STREQ(_T("0"), list
[0].m_StatDel
);
204 EXPECT_EQ(0, list
[0].m_ParentNo
);
205 EXPECT_EQ(CTGitPath::LOGACTIONS_ADDED
, list
[0].m_Action
);
206 EXPECT_STREQ(_T("utf16-be-nobom.txt"), list
[1].GetGitPathString()); // changed from file to symlink
207 EXPECT_STREQ(_T("-"), list
[1].m_StatAdd
);
208 EXPECT_STREQ(_T("-"), list
[1].m_StatDel
);
209 EXPECT_EQ(0, list
[1].m_ParentNo
);
210 EXPECT_EQ(CTGitPath::LOGACTIONS_MODIFIED
, list
[1].m_Action
);
211 EXPECT_STREQ(_T("utf8-bom.txt"), list
[2].GetGitPathString());
212 EXPECT_STREQ(_T("0"), list
[2].m_StatAdd
);
213 EXPECT_STREQ(_T("9"), list
[2].m_StatDel
);
214 EXPECT_EQ(0, list
[2].m_ParentNo
);
215 EXPECT_EQ(CTGitPath::LOGACTIONS_DELETED
, list
[2].m_Action
);
216 EXPECT_STREQ(_T("was-ansi.txt"), list
[3].GetGitPathString());
217 EXPECT_STREQ(_T("0"), list
[3].m_StatAdd
);
218 EXPECT_STREQ(_T("0"), list
[3].m_StatDel
);
219 EXPECT_EQ(0, list
[3].m_ParentNo
);
220 EXPECT_EQ(CTGitPath::LOGACTIONS_REPLACED
, list
[3].m_Action
);
223 TEST_P(GitRevLoglistCBasicGitWithTestRepoFixture
, SafeFetchFullInfo
)
225 SafeFetchFullInfo(&g_Git
);
228 TEST_P(GitRevLoglistCBasicGitWithTestRepoBareFixture
, SafeFetchFullInfo
)
230 SafeFetchFullInfo(&g_Git
);
233 static void SafeGetSimpleList(CGit
* cGit
)
236 EXPECT_EQ(-1, rev
.SafeGetSimpleList(cGit
));
237 EXPECT_STREQ(_T(""), rev
.GetAuthorName());
238 EXPECT_EQ(FALSE
, rev
.m_IsSimpleListReady
);
239 EXPECT_EQ(TRUE
, rev
.m_IsUpdateing
);
240 EXPECT_EQ(FALSE
, rev
.m_IsFull
);
241 EXPECT_EQ(FALSE
, rev
.m_IsDiffFiles
);
242 EXPECT_EQ(FALSE
, rev
.m_IsCommitParsed
);
244 rev
.m_CommitHash
= _T("7c3cbfe13a929d2291a574dca45e4fd2d2ac1aa6");
245 rev
.m_IsDiffFiles
= TRUE
;
248 rev
.m_CommitHash
= _T("7c3cbfe13a929d2291a574dca45e4fd2d2ac1aa6");
249 rev
.m_IsUpdateing
= TRUE
; // do nothing
250 EXPECT_EQ(0, rev
.SafeGetSimpleList(cGit
));
251 EXPECT_STREQ(_T(""), rev
.GetAuthorName());
252 EXPECT_EQ(FALSE
, rev
.m_IsSimpleListReady
);
253 EXPECT_EQ(TRUE
, rev
.m_IsUpdateing
);
254 EXPECT_EQ(FALSE
, rev
.m_IsFull
);
255 EXPECT_EQ(FALSE
, rev
.m_IsDiffFiles
);
256 EXPECT_EQ(FALSE
, rev
.m_IsCommitParsed
);
257 EXPECT_EQ(0, rev
.GetAction(nullptr));
258 EXPECT_EQ(0, rev
.GetFiles(nullptr).GetCount());
260 rev
.m_CommitHash
= _T("7c3cbfe13a929d2291a574dca45e4fd2d2ac1aa6");
261 EXPECT_EQ(0, rev
.SafeGetSimpleList(cGit
));
262 EXPECT_STREQ(_T(""), rev
.GetAuthorName());
263 EXPECT_EQ(TRUE
, rev
.m_IsSimpleListReady
);
264 EXPECT_EQ(FALSE
, rev
.m_IsUpdateing
);
265 EXPECT_EQ(FALSE
, rev
.m_IsFull
);
266 EXPECT_EQ(FALSE
, rev
.m_IsDiffFiles
);
267 EXPECT_EQ(FALSE
, rev
.m_IsCommitParsed
);
268 EXPECT_EQ(CTGitPath::LOGACTIONS_MODIFIED
, rev
.GetAction(nullptr));
269 ASSERT_EQ(1, rev
.GetFiles(nullptr).GetCount());
270 list
= rev
.GetFiles(nullptr);
271 EXPECT_STREQ(_T("ascii.txt"), list
[0].GetGitPathString());
272 EXPECT_STREQ(_T("2"), list
[0].m_StatAdd
);
273 EXPECT_STREQ(_T("2"), list
[0].m_StatDel
);
274 EXPECT_EQ(0, list
[0].m_ParentNo
);
275 EXPECT_EQ(CTGitPath::LOGACTIONS_MODIFIED
, list
[0].m_Action
);
277 EXPECT_EQ(0, rev
.GetFiles(nullptr).GetCount());
278 rev
.m_CommitHash
= _T("dead91b4aedeaddeaddead2a56d3c473c705dead"); // non-existent commit
279 EXPECT_EQ(-1, rev
.SafeGetSimpleList(cGit
));
280 EXPECT_EQ(FALSE
, rev
.m_IsSimpleListReady
);
281 EXPECT_EQ(TRUE
, rev
.m_IsUpdateing
);
282 EXPECT_EQ(FALSE
, rev
.m_IsFull
);
283 EXPECT_EQ(FALSE
, rev
.m_IsDiffFiles
);
284 EXPECT_EQ(FALSE
, rev
.m_IsCommitParsed
);
286 rev
.m_CommitHash
= _T("35c91b4ae2f77f4f21a7aba56d3c473c705d89e6");
287 EXPECT_EQ(0, rev
.SafeGetSimpleList(cGit
));
288 EXPECT_EQ(CTGitPath::LOGACTIONS_MODIFIED
, rev
.GetAction(nullptr));
289 ASSERT_EQ(4, rev
.GetFiles(nullptr).GetCount());
290 list
= rev
.GetFiles(nullptr);
291 EXPECT_STREQ(_T("copy/ansi.txt"), list
[0].GetGitPathString());
292 EXPECT_STREQ(_T("1"), list
[0].m_StatAdd
);
293 EXPECT_STREQ(_T("1"), list
[0].m_StatDel
);
294 EXPECT_EQ(0, list
[0].m_ParentNo
);
295 EXPECT_EQ(CTGitPath::LOGACTIONS_MODIFIED
, list
[0].m_Action
);
296 EXPECT_STREQ(_T("copy/utf16-be-nobom.txt"), list
[1].GetGitPathString());
297 EXPECT_STREQ(_T("-"), list
[1].m_StatAdd
);
298 EXPECT_STREQ(_T("-"), list
[1].m_StatDel
);
299 EXPECT_EQ(0, list
[1].m_ParentNo
);
300 EXPECT_EQ(CTGitPath::LOGACTIONS_MODIFIED
, list
[1].m_Action
);
301 EXPECT_STREQ(_T("copy/utf8-bom.txt"), list
[2].GetGitPathString());
302 EXPECT_STREQ(_T("1"), list
[2].m_StatAdd
);
303 EXPECT_STREQ(_T("1"), list
[2].m_StatDel
);
304 EXPECT_EQ(0, list
[2].m_ParentNo
);
305 EXPECT_EQ(CTGitPath::LOGACTIONS_MODIFIED
, list
[2].m_Action
);
306 EXPECT_STREQ(_T("copy/utf8-nobom.txt"), list
[3].GetGitPathString());
307 EXPECT_STREQ(_T("1"), list
[3].m_StatAdd
);
308 EXPECT_STREQ(_T("1"), list
[3].m_StatDel
);
309 EXPECT_EQ(0, list
[3].m_ParentNo
);
310 EXPECT_EQ(CTGitPath::LOGACTIONS_MODIFIED
, list
[3].m_Action
);
312 rev
.m_CommitHash
= _T("8d1ebbcc7eeb63af10ff8bcf7712afb9fcc90b8a"); // merge commit
313 EXPECT_EQ(0, rev
.SafeGetSimpleList(cGit
));
314 EXPECT_EQ(CTGitPath::LOGACTIONS_ADDED
, rev
.GetAction(nullptr));
315 ASSERT_EQ(1, rev
.GetFiles(nullptr).GetCount());
316 list
= rev
.GetFiles(nullptr);
317 EXPECT_STREQ(_T("newfiles3.txt"), list
[0].GetGitPathString());
318 EXPECT_STREQ(_T("1"), list
[0].m_StatAdd
);
319 EXPECT_STREQ(_T("0"), list
[0].m_StatDel
);
320 EXPECT_EQ(0, list
[0].m_ParentNo
);
321 EXPECT_EQ(CTGitPath::LOGACTIONS_ADDED
, list
[0].m_Action
);
323 rev
.m_CommitHash
= _T("18da7c332dcad0f37f9977d9176dce0b0c66f3eb"); // stash commit
324 EXPECT_EQ(0, rev
.SafeGetSimpleList(cGit
));
325 EXPECT_EQ(CTGitPath::LOGACTIONS_MODIFIED
, rev
.GetAction(nullptr));
326 ASSERT_EQ(2, rev
.GetFiles(nullptr).GetCount());
327 list
= rev
.GetFiles(nullptr);
328 EXPECT_STREQ(_T("newfiles.txt"), list
[0].GetGitPathString());
329 EXPECT_STREQ(_T("1"), list
[0].m_StatAdd
);
330 EXPECT_STREQ(_T("1"), list
[0].m_StatDel
);
331 EXPECT_EQ(0, list
[0].m_ParentNo
);
332 EXPECT_EQ(CTGitPath::LOGACTIONS_MODIFIED
, list
[0].m_Action
);
333 EXPECT_STREQ(_T("newfiles.txt"), list
[1].GetGitPathString());
334 EXPECT_STREQ(_T("1"), list
[1].m_StatAdd
);
335 EXPECT_STREQ(_T("1"), list
[1].m_StatDel
);
336 EXPECT_EQ(1, list
[1].m_ParentNo
);
337 EXPECT_EQ(CTGitPath::LOGACTIONS_MODIFIED
, list
[1].m_Action
);
339 rev
.m_CommitHash
= _T("844309789a13614b52d5e7cbfe6350dd73d1dc72"); // root commit
340 EXPECT_EQ(0, rev
.SafeGetSimpleList(cGit
));
341 EXPECT_EQ(CTGitPath::LOGACTIONS_ADDED
, rev
.GetAction(nullptr));
342 ASSERT_EQ(1, rev
.GetFiles(nullptr).GetCount());
343 EXPECT_STREQ(_T("ansi.txt"), rev
.GetFiles(nullptr)[0].GetGitPathString());
345 rev
.m_CommitHash
= _T("4c5c93d2a0b368bc4570d5ec02ab03b9c4334d44");
346 EXPECT_EQ(0, rev
.SafeGetSimpleList(cGit
));
347 EXPECT_EQ(CTGitPath::LOGACTIONS_ADDED
| CTGitPath::LOGACTIONS_MODIFIED
| CTGitPath::LOGACTIONS_DELETED
| CTGitPath::LOGACTIONS_REPLACED
, rev
.GetAction(nullptr));
348 ASSERT_EQ(4, rev
.GetFiles(nullptr).GetCount());
349 list
= rev
.GetFiles(nullptr);
350 EXPECT_STREQ(_T("newfiles2 - Cöpy.txt"), list
[0].GetGitPathString());
351 EXPECT_STREQ(_T("1"), list
[0].m_StatAdd
);
352 EXPECT_STREQ(_T("0"), list
[0].m_StatDel
);
353 EXPECT_EQ(0, list
[0].m_ParentNo
);
354 EXPECT_EQ(CTGitPath::LOGACTIONS_ADDED
, list
[0].m_Action
);
355 EXPECT_STREQ(_T("utf16-be-nobom.txt"), list
[1].GetGitPathString()); // changed from file to symlink
356 EXPECT_STREQ(_T("-"), list
[1].m_StatAdd
);
357 EXPECT_STREQ(_T("-"), list
[1].m_StatDel
);
358 EXPECT_EQ(0, list
[1].m_ParentNo
);
359 EXPECT_EQ(CTGitPath::LOGACTIONS_MODIFIED
, list
[1].m_Action
);
360 EXPECT_STREQ(_T("utf8-bom.txt"), list
[2].GetGitPathString());
361 EXPECT_STREQ(_T("0"), list
[2].m_StatAdd
);
362 EXPECT_STREQ(_T("9"), list
[2].m_StatDel
);
363 EXPECT_EQ(0, list
[2].m_ParentNo
);
364 EXPECT_EQ(CTGitPath::LOGACTIONS_DELETED
, list
[2].m_Action
);
365 EXPECT_STREQ(_T("was-ansi.txt"), list
[3].GetGitPathString());
366 EXPECT_STREQ(_T("0"), list
[3].m_StatAdd
);
367 EXPECT_STREQ(_T("0"), list
[3].m_StatDel
);
368 EXPECT_EQ(0, list
[3].m_ParentNo
);
369 EXPECT_EQ(CTGitPath::LOGACTIONS_REPLACED
, list
[3].m_Action
);
372 TEST_P(GitRevLoglistCBasicGitWithTestRepoFixture
, SafeGetSimpleList
)
374 SafeGetSimpleList(&g_Git
);
377 TEST_P(GitRevLoglistCBasicGitWithTestRepoBareFixture
, SafeGetSimpleList
)
379 SafeGetSimpleList(&g_Git
);
382 TEST(GitRevLoglist
, IsBoundary
)
385 EXPECT_EQ(FALSE
, rev
.IsBoundary());
386 rev
.m_Mark
= _T('-');
387 EXPECT_EQ(TRUE
, rev
.IsBoundary());
389 EXPECT_EQ(FALSE
, rev
.IsBoundary());
392 TEST(GitRevLoglist
, GetUnRevFiles
)
395 EXPECT_EQ(0, rev
.GetUnRevFiles().GetCount());
396 CTGitPathList
& list
= rev
.GetUnRevFiles();
397 list
.AddPath(CTGitPath("file.txt"));
398 EXPECT_EQ(1, rev
.GetUnRevFiles().GetCount());
400 EXPECT_EQ(0, list
.GetCount());
401 EXPECT_EQ(0, rev
.GetUnRevFiles().GetCount());
404 TEST(GitRevLoglist
, GetAction
)
407 EXPECT_EQ(0, rev
.GetAction(nullptr));
408 int& action
= rev
.GetAction(nullptr);
410 EXPECT_EQ(5, rev
.GetAction(nullptr));
412 EXPECT_EQ(0, action
);
413 EXPECT_EQ(0, rev
.GetAction(nullptr));
416 static void GetReflog()
419 std::vector
<GitRevLoglist
> revloglist
;
420 EXPECT_EQ(0, GitRevLoglist::GetRefLog(_T("refs/stash"), revloglist
, err
));
421 EXPECT_EQ(0, revloglist
.size());
422 EXPECT_TRUE(err
.IsEmpty());
424 EXPECT_EQ(0, GitRevLoglist::GetRefLog(_T("HEAD"), revloglist
, err
));
425 EXPECT_EQ(12, revloglist
.size());
426 EXPECT_TRUE(err
.IsEmpty());
429 EXPECT_EQ(0, GitRevLoglist::GetRefLog(_T("refs/heads/does-not-exist"), revloglist
, err
));
430 EXPECT_EQ(0, revloglist
.size());
431 EXPECT_TRUE(err
.IsEmpty());
434 EXPECT_EQ(0, GitRevLoglist::GetRefLog(_T("refs/heads/master"), revloglist
, err
));
435 ASSERT_EQ(7, revloglist
.size());
436 EXPECT_TRUE(err
.IsEmpty());
438 EXPECT_STREQ(_T("7c3cbfe13a929d2291a574dca45e4fd2d2ac1aa6"), revloglist
[0].m_CommitHash
.ToString());
439 EXPECT_STREQ(_T("refs/heads/master@{0}"), revloglist
[0].m_Ref
);
440 EXPECT_STREQ(_T("reset"), revloglist
[0].m_RefAction
);
441 //EXPECT_STREQ(_T("Sven Strickroth"), revloglist[0].GetCommitterName());
442 //EXPECT_STREQ(_T("email@cs-ware.de"), revloglist[0].GetCommitterEmail());
443 EXPECT_STREQ(_T("2015-03-16 12:59:51"), revloglist
[0].GetCommitterDate().FormatGmt(L
"%Y-%m-%d %H:%M:%S"));
444 EXPECT_STREQ(_T("moving to 7c3cbfe13a929d2291a574dca45e4fd2d2ac1aa6"), revloglist
[0].GetSubject());
446 EXPECT_STREQ(_T("aa5b97f89cea6863222823c8289ce392d06d1691"), revloglist
[2].m_CommitHash
.ToString());
447 EXPECT_STREQ(_T("refs/heads/master@{2}"), revloglist
[2].m_Ref
);
448 EXPECT_STREQ(_T("reset"), revloglist
[2].m_RefAction
);
449 //EXPECT_STREQ(_T("Dümmy User"), revloglist[2].GetCommitterName());
450 //EXPECT_STREQ(_T("dummy@example.com"), revloglist[2].GetCommitterEmail());
451 EXPECT_STREQ(_T("2015-03-16 12:59:07"), revloglist
[2].GetCommitterDate().FormatGmt(L
"%Y-%m-%d %H:%M:%S"));
452 EXPECT_STREQ(_T("moving to aa5b97f89cea6863222823c8289ce392d06d1691"), revloglist
[2].GetSubject());
454 EXPECT_STREQ(_T("df8019413c88d2aedbf33fc2dac3544312da4c18"), revloglist
[3].m_CommitHash
.ToString());
455 EXPECT_STREQ(_T("refs/heads/master@{3}"), revloglist
[3].m_Ref
);
456 EXPECT_STREQ(_T("commit (amend)"), revloglist
[3].m_RefAction
);
457 //EXPECT_STREQ(_T("Sven Strickroth"), revloglist[3].GetCommitterName());
458 //EXPECT_STREQ(_T("email@cs-ware.de"), revloglist[3].GetCommitterEmail());
459 EXPECT_STREQ(_T("2015-03-16 12:55:00"), revloglist
[3].GetCommitterDate().FormatGmt(L
"%Y-%m-%d %H:%M:%S"));
460 EXPECT_STREQ(_T("Several actions"), revloglist
[3].GetSubject());
462 EXPECT_STREQ(_T("32c344625f14ecb16b6f003a77eb7a3d2c15d470"), revloglist
[4].m_CommitHash
.ToString());
463 EXPECT_STREQ(_T("refs/heads/master@{4}"), revloglist
[4].m_Ref
);
464 EXPECT_STREQ(_T("commit"), revloglist
[4].m_RefAction
);
465 //EXPECT_STREQ(_T("Sven Strickroth"), revloglist[4].GetCommitterName());
466 //EXPECT_STREQ(_T("email@cs-ware.de"), revloglist[4].GetCommitterEmail());
467 EXPECT_STREQ(_T("2015-03-16 12:52:22"), revloglist
[4].GetCommitterDate().FormatGmt(L
"%Y-%m-%d %H:%M:%S"));
468 EXPECT_STREQ(_T("renamed a file"), revloglist
[4].GetSubject());
470 EXPECT_STREQ(_T("7c3cbfe13a929d2291a574dca45e4fd2d2ac1aa6"), revloglist
[5].m_CommitHash
.ToString());
471 EXPECT_STREQ(_T("refs/heads/master@{5}"), revloglist
[5].m_Ref
);
472 EXPECT_STREQ(_T("fetch origin +refs/heads/*:refs/heads/*"), revloglist
[5].m_RefAction
);
473 //EXPECT_STREQ(_T("Dummy author"), revloglist[5].GetCommitterName());
474 //EXPECT_STREQ(_T("a@example.com"), revloglist[5].GetCommitterEmail());
475 EXPECT_STREQ(_T("2015-03-16 12:52:10"), revloglist
[5].GetCommitterDate().FormatGmt(L
"%Y-%m-%d %H:%M:%S"));
476 EXPECT_STREQ(_T("forced-update"), revloglist
[5].GetSubject());
478 EXPECT_STREQ(_T("560deea87853158b22d0c0fd73f60a458d47838a"), revloglist
[6].m_CommitHash
.ToString());
479 EXPECT_STREQ(_T("refs/heads/master@{6}"), revloglist
[6].m_Ref
);
480 EXPECT_STREQ(_T("push"), revloglist
[6].m_RefAction
);
481 //EXPECT_STREQ(_T("Sven Strickroth"), revloglist[6].GetCommitterName());
482 //EXPECT_STREQ(_T("email@cs-ware.de"), revloglist[6].GetCommitterEmail());
483 EXPECT_STREQ(_T("2015-03-16 12:51:40"), revloglist
[6].GetCommitterDate().FormatGmt(L
"%Y-%m-%d %H:%M:%S"));
484 EXPECT_STREQ(_T(""), revloglist
[6].GetSubject());
487 TEST_P(GitRevLoglist2CBasicGitWithTestRepoFixture
, GetReflog
)
492 TEST_P(GitRevLoglist2CBasicGitWithTestRepoBareFixture
, GetReflog
)