1
// TortoiseGit - a Windows shell extension for easy version control
3 // Copyright (C) 2018 - 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 "StringUtils.h"
25 class GitWCRevStatusCBasicGitWithTestRepoFixture
: public CBasicGitWithTestRepoFixture
29 class GitWCRevStatusCBasicGitWithEmptyRepositoryFixture
: public CBasicGitWithEmptyRepositoryFixture
33 class GitWCRevStatusCBasicGitWithTestBareRepositoryFixture
: public CBasicGitWithTestRepoBareFixture
37 INSTANTIATE_TEST_CASE_P(GitWCRevStatus
, GitWCRevStatusCBasicGitWithTestRepoFixture
, testing::Values(LIBGIT2
));
38 INSTANTIATE_TEST_CASE_P(GitWCRevStatus
, GitWCRevStatusCBasicGitWithEmptyRepositoryFixture
, testing::Values(LIBGIT2
));
39 INSTANTIATE_TEST_CASE_P(GitWCRevStatus
, GitWCRevStatusCBasicGitWithTestBareRepositoryFixture
, testing::Values(LIBGIT2
));
41 TEST(GitWCRevStatus
, NotExists
)
44 EXPECT_EQ(ERR_NOWC
, GetStatus(L
"C:\\Windows\\does-not-exist", GitStat
));
47 TEST(GitWCRevStatus
, NoWorkingTree
)
50 EXPECT_EQ(ERR_NOWC
, GetStatus(L
"C:\\Windows", GitStat
));
53 TEST(GitWCRevStatus
, EmptyBareRepo
)
57 git_repository_init_options options
= GIT_REPOSITORY_INIT_OPTIONS_INIT
;
58 options
.flags
= GIT_REPOSITORY_INIT_MKPATH
| GIT_REPOSITORY_INIT_BARE
| GIT_REPOSITORY_INIT_NO_DOTGIT_DIR
;
60 ASSERT_EQ(0, git_repository_init_ext(repo
.GetPointer(), CUnicodeUtils::GetUTF8(tempdir
.GetTempDir()), &options
));
63 EXPECT_EQ(ERR_NOWC
, GetStatus(tempdir
.GetTempDir(), GitStat
));
66 TEST_P(GitWCRevStatusCBasicGitWithTestBareRepositoryFixture
, BareRepo
)
69 EXPECT_EQ(ERR_NOWC
, GetStatus(m_Dir
.GetTempDir(), GitStat
));
72 TEST_P(GitWCRevStatusCBasicGitWithEmptyRepositoryFixture
, EmptyRepo
)
75 EXPECT_EQ(0, GetStatus(m_Dir
.GetTempDir(), GitStat
));
76 EXPECT_TRUE(GitStat
.bIsGitItem
);
77 EXPECT_TRUE(GitStat
.bIsUnborn
);
78 EXPECT_STREQ("master", GitStat
.CurrentBranch
.c_str());
79 EXPECT_FALSE(GitStat
.bHasSubmodule
);
80 EXPECT_FALSE(GitStat
.HasMods
);
81 EXPECT_FALSE(GitStat
.HasUnversioned
);
82 EXPECT_EQ(0u, GitStat
.NumCommits
);
83 EXPECT_FALSE(GitStat
.bHasSubmoduleMods
);
84 EXPECT_FALSE(GitStat
.bHasSubmoduleNewCommits
);
85 EXPECT_FALSE(GitStat
.bHasSubmoduleUnversioned
);
86 EXPECT_FALSE(GitStat
.bIsTagged
);
87 EXPECT_STREQ(GIT_REV_ZERO_C
, GitStat
.HeadHashReadable
);
88 EXPECT_STREQ("", GitStat
.HeadAuthor
.c_str());
91 TEST_P(GitWCRevStatusCBasicGitWithEmptyRepositoryFixture
, EmptyRepoFile
)
93 CString file
= m_Dir
.GetTempDir() + L
"\\somefile.txt";
96 EXPECT_TRUE(CStringUtils::WriteStringToTextFile(file
, L
"something\n"));
97 EXPECT_EQ(0, GetStatus(m_Dir
.GetTempDir(), GitStat
));
98 EXPECT_TRUE(GitStat
.bIsGitItem
);
99 EXPECT_TRUE(GitStat
.bIsUnborn
);
100 EXPECT_STREQ("master", GitStat
.CurrentBranch
.c_str());
101 EXPECT_FALSE(GitStat
.bHasSubmodule
);
102 EXPECT_FALSE(GitStat
.HasMods
);
103 EXPECT_TRUE(GitStat
.HasUnversioned
);
104 EXPECT_EQ(0u, GitStat
.NumCommits
);
105 EXPECT_FALSE(GitStat
.bHasSubmoduleMods
);
106 EXPECT_FALSE(GitStat
.bHasSubmoduleNewCommits
);
107 EXPECT_FALSE(GitStat
.bHasSubmoduleUnversioned
);
108 EXPECT_FALSE(GitStat
.bIsTagged
);
109 EXPECT_STREQ(GIT_REV_ZERO_C
, GitStat
.HeadHashReadable
);
110 EXPECT_STREQ("", GitStat
.HeadAuthor
.c_str());
113 EXPECT_EQ(0, GetStatus(file
, GitStat2
));
114 EXPECT_FALSE(GitStat2
.bIsGitItem
);
115 EXPECT_TRUE(GitStat2
.bIsUnborn
);
116 EXPECT_STREQ("master", GitStat2
.CurrentBranch
.c_str());
117 EXPECT_FALSE(GitStat2
.bHasSubmodule
);
118 EXPECT_FALSE(GitStat2
.HasMods
);
119 EXPECT_TRUE(GitStat2
.HasUnversioned
);
120 EXPECT_EQ(0u, GitStat2
.NumCommits
);
121 EXPECT_FALSE(GitStat2
.bHasSubmoduleMods
);
122 EXPECT_FALSE(GitStat2
.bHasSubmoduleNewCommits
);
123 EXPECT_FALSE(GitStat2
.bHasSubmoduleUnversioned
);
124 EXPECT_FALSE(GitStat2
.bIsTagged
);
125 EXPECT_STREQ(GIT_REV_ZERO_C
, GitStat2
.HeadHashReadable
);
126 EXPECT_STREQ("", GitStat2
.HeadAuthor
.c_str());
129 TEST_P(GitWCRevStatusCBasicGitWithEmptyRepositoryFixture
, EmptyRepoStagedFile
)
131 CString file
= m_Dir
.GetTempDir() + L
"\\somefile.txt";
133 EXPECT_TRUE(CStringUtils::WriteStringToTextFile(file
, L
"something\n"));
135 CAutoRepository repo
;
136 ASSERT_EQ(0, git_repository_open(repo
.GetPointer(), CUnicodeUtils::GetUTF8(m_Dir
.GetTempDir())));
138 ASSERT_EQ(0, git_repository_index(index
.GetPointer(), repo
));
139 ASSERT_EQ(0, git_index_add_bypath(index
, "somefile.txt"));
140 ASSERT_EQ(0, git_index_write(index
));
143 EXPECT_TRUE(CStringUtils::WriteStringToTextFile(file
, L
"something\n"));
144 EXPECT_EQ(0, GetStatus(m_Dir
.GetTempDir(), GitStat3
));
145 EXPECT_TRUE(GitStat3
.bIsGitItem
);
146 EXPECT_TRUE(GitStat3
.bIsUnborn
);
147 EXPECT_STREQ("master", GitStat3
.CurrentBranch
.c_str());
148 EXPECT_FALSE(GitStat3
.bHasSubmodule
);
149 EXPECT_FALSE(GitStat3
.HasMods
);
150 EXPECT_TRUE(GitStat3
.HasUnversioned
);
151 EXPECT_EQ(0u, GitStat3
.NumCommits
);
152 EXPECT_FALSE(GitStat3
.bHasSubmoduleMods
);
153 EXPECT_FALSE(GitStat3
.bHasSubmoduleNewCommits
);
154 EXPECT_FALSE(GitStat3
.bHasSubmoduleUnversioned
);
155 EXPECT_FALSE(GitStat3
.bIsTagged
);
156 EXPECT_STREQ(GIT_REV_ZERO_C
, GitStat3
.HeadHashReadable
);
157 EXPECT_STREQ("", GitStat3
.HeadAuthor
.c_str());
160 EXPECT_EQ(0, GetStatus(file
, GitStat4
));
161 EXPECT_FALSE(GitStat4
.bIsGitItem
);
162 EXPECT_TRUE(GitStat4
.bIsUnborn
);
163 EXPECT_STREQ("master", GitStat4
.CurrentBranch
.c_str());
164 EXPECT_FALSE(GitStat4
.bHasSubmodule
);
165 EXPECT_FALSE(GitStat4
.HasMods
);
166 EXPECT_TRUE(GitStat4
.HasUnversioned
);
167 EXPECT_EQ(0u, GitStat4
.NumCommits
);
168 EXPECT_FALSE(GitStat4
.bHasSubmoduleMods
);
169 EXPECT_FALSE(GitStat4
.bHasSubmoduleNewCommits
);
170 EXPECT_FALSE(GitStat4
.bHasSubmoduleUnversioned
);
171 EXPECT_FALSE(GitStat4
.bIsTagged
);
172 EXPECT_STREQ(GIT_REV_ZERO_C
, GitStat4
.HeadHashReadable
);
173 EXPECT_STREQ("", GitStat4
.HeadAuthor
.c_str());
176 TEST_P(GitWCRevStatusCBasicGitWithEmptyRepositoryFixture
, EmptyRepoFolder
)
178 CString folder
= m_Dir
.GetTempDir() + L
"\\folder";
180 ASSERT_TRUE(CreateDirectory(folder
, nullptr));
181 EXPECT_EQ(0, GetStatus(m_Dir
.GetTempDir(), GitStat
));
182 EXPECT_TRUE(GitStat
.bIsGitItem
);
183 EXPECT_TRUE(GitStat
.bIsUnborn
);
184 EXPECT_STREQ("master", GitStat
.CurrentBranch
.c_str());
185 EXPECT_FALSE(GitStat
.bHasSubmodule
);
186 EXPECT_FALSE(GitStat
.HasMods
);
187 EXPECT_FALSE(GitStat
.HasUnversioned
);
188 EXPECT_EQ(0u, GitStat
.NumCommits
);
189 EXPECT_FALSE(GitStat
.bHasSubmoduleMods
);
190 EXPECT_FALSE(GitStat
.bHasSubmoduleNewCommits
);
191 EXPECT_FALSE(GitStat
.bHasSubmoduleUnversioned
);
192 EXPECT_FALSE(GitStat
.bIsTagged
);
193 EXPECT_STREQ(GIT_REV_ZERO_C
, GitStat
.HeadHashReadable
);
194 EXPECT_STREQ("", GitStat
.HeadAuthor
.c_str());
197 EXPECT_EQ(0, GetStatus(folder
, GitStat2
));
198 EXPECT_FALSE(GitStat2
.bIsGitItem
);
199 EXPECT_TRUE(GitStat2
.bIsUnborn
);
200 EXPECT_STREQ("master", GitStat2
.CurrentBranch
.c_str());
201 EXPECT_FALSE(GitStat2
.bHasSubmodule
);
202 EXPECT_FALSE(GitStat2
.HasMods
);
203 EXPECT_FALSE(GitStat2
.HasUnversioned
);
204 EXPECT_EQ(0u, GitStat2
.NumCommits
);
205 EXPECT_FALSE(GitStat2
.bHasSubmoduleMods
);
206 EXPECT_FALSE(GitStat2
.bHasSubmoduleNewCommits
);
207 EXPECT_FALSE(GitStat2
.bHasSubmoduleUnversioned
);
208 EXPECT_FALSE(GitStat2
.bIsTagged
);
209 EXPECT_STREQ(GIT_REV_ZERO_C
, GitStat2
.HeadHashReadable
);
210 EXPECT_STREQ("", GitStat2
.HeadAuthor
.c_str());
213 TEST_P(GitWCRevStatusCBasicGitWithEmptyRepositoryFixture
, EmptyRepoFolderFile
)
215 CString folder
= m_Dir
.GetTempDir() + L
"\\folder";
218 ASSERT_TRUE(CreateDirectory(folder
, nullptr));
219 EXPECT_TRUE(CStringUtils::WriteStringToTextFile(folder
+ L
"\\somefile.txt", L
"something\n"));
220 EXPECT_EQ(0, GetStatus(m_Dir
.GetTempDir(), GitStat
));
221 EXPECT_TRUE(GitStat
.bIsGitItem
);
222 EXPECT_TRUE(GitStat
.bIsUnborn
);
223 EXPECT_STREQ("master", GitStat
.CurrentBranch
.c_str());
224 EXPECT_FALSE(GitStat
.bHasSubmodule
);
225 EXPECT_FALSE(GitStat
.HasMods
);
226 EXPECT_TRUE(GitStat
.HasUnversioned
);
227 EXPECT_EQ(0u, GitStat
.NumCommits
);
228 EXPECT_FALSE(GitStat
.bHasSubmoduleMods
);
229 EXPECT_FALSE(GitStat
.bHasSubmoduleNewCommits
);
230 EXPECT_FALSE(GitStat
.bHasSubmoduleUnversioned
);
231 EXPECT_FALSE(GitStat
.bIsTagged
);
232 EXPECT_STREQ(GIT_REV_ZERO_C
, GitStat
.HeadHashReadable
);
233 EXPECT_STREQ("", GitStat
.HeadAuthor
.c_str());
236 EXPECT_EQ(0, GetStatus(folder
, GitStat2
));
237 EXPECT_FALSE(GitStat2
.bIsGitItem
);
238 EXPECT_TRUE(GitStat2
.bIsUnborn
);
239 EXPECT_STREQ("master", GitStat2
.CurrentBranch
.c_str());
240 EXPECT_FALSE(GitStat2
.bHasSubmodule
);
241 EXPECT_FALSE(GitStat2
.HasMods
);
242 EXPECT_TRUE(GitStat2
.HasUnversioned
);
243 EXPECT_EQ(0u, GitStat2
.NumCommits
);
244 EXPECT_FALSE(GitStat2
.bHasSubmoduleMods
);
245 EXPECT_FALSE(GitStat2
.bHasSubmoduleNewCommits
);
246 EXPECT_FALSE(GitStat2
.bHasSubmoduleUnversioned
);
247 EXPECT_FALSE(GitStat2
.bIsTagged
);
248 EXPECT_STREQ(GIT_REV_ZERO_C
, GitStat2
.HeadHashReadable
);
249 EXPECT_STREQ("", GitStat2
.HeadAuthor
.c_str());
252 EXPECT_EQ(0, GetStatus(folder
+ L
"\\somefile.txt", GitStat3
));
253 EXPECT_FALSE(GitStat3
.bIsGitItem
);
254 EXPECT_TRUE(GitStat3
.bIsUnborn
);
255 EXPECT_STREQ("master", GitStat3
.CurrentBranch
.c_str());
256 EXPECT_FALSE(GitStat3
.bHasSubmodule
);
257 EXPECT_FALSE(GitStat3
.HasMods
);
258 EXPECT_TRUE(GitStat3
.HasUnversioned
);
259 EXPECT_EQ(0u, GitStat3
.NumCommits
);
260 EXPECT_FALSE(GitStat3
.bHasSubmoduleMods
);
261 EXPECT_FALSE(GitStat3
.bHasSubmoduleNewCommits
);
262 EXPECT_FALSE(GitStat3
.bHasSubmoduleUnversioned
);
263 EXPECT_FALSE(GitStat3
.bIsTagged
);
264 EXPECT_STREQ(GIT_REV_ZERO_C
, GitStat3
.HeadHashReadable
);
265 EXPECT_STREQ("", GitStat3
.HeadAuthor
.c_str());
267 CString folder2
= folder
+ L
"2";
268 ASSERT_TRUE(CreateDirectory(folder2
, nullptr));
270 EXPECT_EQ(0, GetStatus(folder2
, GitStat4
));
271 EXPECT_FALSE(GitStat4
.bIsGitItem
);
272 EXPECT_TRUE(GitStat4
.bIsUnborn
);
273 EXPECT_STREQ("master", GitStat4
.CurrentBranch
.c_str());
274 EXPECT_FALSE(GitStat4
.bHasSubmodule
);
275 EXPECT_FALSE(GitStat4
.HasMods
);
276 EXPECT_FALSE(GitStat4
.HasUnversioned
);
277 EXPECT_EQ(0u, GitStat4
.NumCommits
);
278 EXPECT_FALSE(GitStat4
.bHasSubmoduleMods
);
279 EXPECT_FALSE(GitStat4
.bHasSubmoduleNewCommits
);
280 EXPECT_FALSE(GitStat4
.bHasSubmoduleUnversioned
);
281 EXPECT_FALSE(GitStat4
.bIsTagged
);
282 EXPECT_STREQ(GIT_REV_ZERO_C
, GitStat4
.HeadHashReadable
);
283 EXPECT_STREQ("", GitStat4
.HeadAuthor
.c_str());
286 TEST_P(GitWCRevStatusCBasicGitWithTestRepoFixture
, Basic
)
289 EXPECT_EQ(0, GetStatus(m_Dir
.GetTempDir(), GitStat
));
290 EXPECT_TRUE(GitStat
.bIsGitItem
);
291 EXPECT_FALSE(GitStat
.bIsUnborn
);
292 EXPECT_STREQ("master", GitStat
.CurrentBranch
.c_str());
293 EXPECT_FALSE(GitStat
.bHasSubmodule
);
294 EXPECT_TRUE(GitStat
.HasMods
);
295 EXPECT_FALSE(GitStat
.HasUnversioned
);
296 EXPECT_EQ(12u, GitStat
.NumCommits
);
297 EXPECT_FALSE(GitStat
.bHasSubmoduleMods
);
298 EXPECT_FALSE(GitStat
.bHasSubmoduleNewCommits
);
299 EXPECT_FALSE(GitStat
.bHasSubmoduleUnversioned
);
300 EXPECT_FALSE(GitStat
.bIsTagged
);
301 EXPECT_STREQ("7c3cbfe13a929d2291a574dca45e4fd2d2ac1aa6", GitStat
.HeadHashReadable
);
302 EXPECT_STREQ("Sven Strickroth", GitStat
.HeadAuthor
.c_str());
303 EXPECT_STREQ("email@cs-ware.de", GitStat
.HeadEmail
.c_str());
306 EXPECT_EQ(0, m_Git
.Run(L
"git.exe checkout -f master2", &output
, nullptr, CP_UTF8
));
307 EXPECT_STREQ(L
"", output
);
310 EXPECT_EQ(0, GetStatus(m_Dir
.GetTempDir(), GitStat2
));
311 EXPECT_TRUE(GitStat2
.bIsGitItem
);
312 EXPECT_FALSE(GitStat2
.bIsUnborn
);
313 EXPECT_STREQ("master2", GitStat2
.CurrentBranch
.c_str());
314 EXPECT_FALSE(GitStat2
.bHasSubmodule
);
315 EXPECT_FALSE(GitStat2
.HasMods
);
316 EXPECT_FALSE(GitStat2
.HasUnversioned
);
317 EXPECT_EQ(10u, GitStat2
.NumCommits
);
318 EXPECT_FALSE(GitStat2
.bHasSubmoduleMods
);
319 EXPECT_FALSE(GitStat2
.bHasSubmoduleNewCommits
);
320 EXPECT_FALSE(GitStat2
.bHasSubmoduleUnversioned
);
321 EXPECT_TRUE(GitStat2
.bIsTagged
);
322 EXPECT_STREQ("49ecdfff36bfe2b9b499b33e5034f427e2fa54dd", GitStat2
.HeadHashReadable
);
323 EXPECT_STREQ("Sven Strickroth", GitStat2
.HeadAuthor
.c_str());
324 EXPECT_STREQ("email@cs-ware.de", GitStat2
.HeadEmail
.c_str());
326 EXPECT_TRUE(DeleteFile(m_Dir
.GetTempDir() + L
"\\utf8-bom.txt"));
329 EXPECT_EQ(0, GetStatus(m_Dir
.GetTempDir() + L
"\\ansi.txt", GitStat3
));
330 EXPECT_TRUE(GitStat3
.bIsGitItem
);
331 EXPECT_FALSE(GitStat3
.bIsUnborn
);
332 EXPECT_STREQ("master2", GitStat3
.CurrentBranch
.c_str());
333 EXPECT_FALSE(GitStat3
.bHasSubmodule
);
334 EXPECT_FALSE(GitStat3
.HasMods
);
335 EXPECT_FALSE(GitStat3
.HasUnversioned
);
336 EXPECT_EQ(10u, GitStat3
.NumCommits
);
337 EXPECT_FALSE(GitStat3
.bHasSubmoduleMods
);
338 EXPECT_FALSE(GitStat3
.bHasSubmoduleNewCommits
);
339 EXPECT_FALSE(GitStat3
.bHasSubmoduleUnversioned
);
340 EXPECT_TRUE(GitStat3
.bIsTagged
);
341 EXPECT_STREQ("49ecdfff36bfe2b9b499b33e5034f427e2fa54dd", GitStat3
.HeadHashReadable
);
342 EXPECT_STREQ("Sven Strickroth", GitStat3
.HeadAuthor
.c_str());
343 EXPECT_STREQ("email@cs-ware.de", GitStat3
.HeadEmail
.c_str());
346 EXPECT_EQ(0, GetStatus(m_Dir
.GetTempDir(), GitStat4
));
347 EXPECT_TRUE(GitStat4
.bIsGitItem
);
348 EXPECT_FALSE(GitStat4
.bIsUnborn
);
349 EXPECT_STREQ("master2", GitStat4
.CurrentBranch
.c_str());
350 EXPECT_FALSE(GitStat4
.bHasSubmodule
);
351 EXPECT_TRUE(GitStat4
.HasMods
); // missing file: utf8-bom.txt
352 EXPECT_FALSE(GitStat4
.HasUnversioned
);
353 EXPECT_EQ(10u, GitStat4
.NumCommits
);
354 EXPECT_FALSE(GitStat4
.bHasSubmoduleMods
);
355 EXPECT_FALSE(GitStat4
.bHasSubmoduleNewCommits
);
356 EXPECT_FALSE(GitStat4
.bHasSubmoduleUnversioned
);
357 EXPECT_TRUE(GitStat4
.bIsTagged
);
358 EXPECT_STREQ("49ecdfff36bfe2b9b499b33e5034f427e2fa54dd", GitStat4
.HeadHashReadable
);
359 EXPECT_STREQ("Sven Strickroth", GitStat4
.HeadAuthor
.c_str());
360 EXPECT_STREQ("email@cs-ware.de", GitStat4
.HeadEmail
.c_str());
362 EXPECT_TRUE(CStringUtils::WriteStringToTextFile(m_Dir
.GetTempDir() + L
"\\copy\\ba.txt", L
"something\n"));
364 EXPECT_EQ(0, GetStatus(m_Dir
.GetTempDir() + L
"\\copy", GitStat5
));
365 EXPECT_FALSE(GitStat5
.bIsGitItem
);
366 EXPECT_FALSE(GitStat5
.bIsUnborn
);
367 EXPECT_STREQ("master2", GitStat5
.CurrentBranch
.c_str());
368 EXPECT_FALSE(GitStat5
.bHasSubmodule
);
369 EXPECT_FALSE(GitStat5
.HasMods
);
370 EXPECT_TRUE(GitStat5
.HasUnversioned
);
371 EXPECT_EQ(10u, GitStat5
.NumCommits
);
372 EXPECT_FALSE(GitStat5
.bHasSubmoduleMods
);
373 EXPECT_FALSE(GitStat5
.bHasSubmoduleNewCommits
);
374 EXPECT_FALSE(GitStat5
.bHasSubmoduleUnversioned
);
375 EXPECT_TRUE(GitStat5
.bIsTagged
);
376 EXPECT_STREQ("49ecdfff36bfe2b9b499b33e5034f427e2fa54dd", GitStat5
.HeadHashReadable
);
377 EXPECT_STREQ("Sven Strickroth", GitStat5
.HeadAuthor
.c_str());
378 EXPECT_STREQ("email@cs-ware.de", GitStat5
.HeadEmail
.c_str());
380 EXPECT_TRUE(CStringUtils::WriteStringToTextFile(m_Dir
.GetTempDir() + L
"\\copy\\aaa.txt", L
"something\n"));
382 EXPECT_EQ(0, GetStatus(m_Dir
.GetTempDir() + L
"\\copy", GitStat6
));
383 EXPECT_FALSE(GitStat6
.bIsGitItem
);
384 EXPECT_FALSE(GitStat6
.bIsUnborn
);
385 EXPECT_STREQ("master2", GitStat6
.CurrentBranch
.c_str());
386 EXPECT_FALSE(GitStat6
.bHasSubmodule
);
387 EXPECT_FALSE(GitStat6
.HasMods
);
388 EXPECT_TRUE(GitStat6
.HasUnversioned
);
389 EXPECT_EQ(10u, GitStat6
.NumCommits
);
390 EXPECT_FALSE(GitStat6
.bHasSubmoduleMods
);
391 EXPECT_FALSE(GitStat6
.bHasSubmoduleNewCommits
);
392 EXPECT_FALSE(GitStat6
.bHasSubmoduleUnversioned
);
393 EXPECT_TRUE(GitStat6
.bIsTagged
);
394 EXPECT_STREQ("49ecdfff36bfe2b9b499b33e5034f427e2fa54dd", GitStat6
.HeadHashReadable
);
395 EXPECT_STREQ("Sven Strickroth", GitStat6
.HeadAuthor
.c_str());
396 EXPECT_STREQ("email@cs-ware.de", GitStat6
.HeadEmail
.c_str());
399 TEST_P(GitWCRevStatusCBasicGitWithTestRepoFixture
, GitWCRevignore
)
402 EXPECT_EQ(0, m_Git
.Run(L
"git.exe checkout -f master", &output
, nullptr, CP_UTF8
));
403 EXPECT_STRNE(L
"", output
);
405 EXPECT_TRUE(CStringUtils::WriteStringToTextFile(m_Dir
.GetTempDir() + L
"\\.GitWCRevignore", L
"\n"));
408 EXPECT_EQ(0, GetStatus(m_Dir
.GetTempDir(), GitStat
));
409 EXPECT_TRUE(GitStat
.bIsGitItem
);
410 EXPECT_FALSE(GitStat
.bIsUnborn
);
411 EXPECT_STREQ("master", GitStat
.CurrentBranch
.c_str());
412 EXPECT_FALSE(GitStat
.bHasSubmodule
);
413 EXPECT_FALSE(GitStat
.HasMods
);
414 EXPECT_TRUE(GitStat
.HasUnversioned
);
415 EXPECT_EQ(12u, GitStat
.NumCommits
);
416 EXPECT_FALSE(GitStat
.bHasSubmoduleMods
);
417 EXPECT_FALSE(GitStat
.bHasSubmoduleNewCommits
);
418 EXPECT_FALSE(GitStat
.bHasSubmoduleUnversioned
);
419 EXPECT_FALSE(GitStat
.bIsTagged
);
420 EXPECT_STREQ("7c3cbfe13a929d2291a574dca45e4fd2d2ac1aa6", GitStat
.HeadHashReadable
);
421 EXPECT_STREQ("Sven Strickroth", GitStat
.HeadAuthor
.c_str());
422 EXPECT_STREQ("email@cs-ware.de", GitStat
.HeadEmail
.c_str());
424 EXPECT_TRUE(CStringUtils::WriteStringToTextFile(m_Dir
.GetTempDir() + L
"\\.GitWCRevignore", L
".GitWCRevignore\n"));
426 EXPECT_EQ(0, GetStatus(m_Dir
.GetTempDir(), GitStat2
));
427 EXPECT_TRUE(GitStat2
.bIsGitItem
);
428 EXPECT_FALSE(GitStat2
.bIsUnborn
);
429 EXPECT_STREQ("master", GitStat2
.CurrentBranch
.c_str());
430 EXPECT_FALSE(GitStat2
.bHasSubmodule
);
431 EXPECT_FALSE(GitStat2
.HasMods
);
432 EXPECT_FALSE(GitStat2
.HasUnversioned
);
433 EXPECT_EQ(12u, GitStat2
.NumCommits
);
434 EXPECT_FALSE(GitStat2
.bHasSubmoduleMods
);
435 EXPECT_FALSE(GitStat2
.bHasSubmoduleNewCommits
);
436 EXPECT_FALSE(GitStat2
.bHasSubmoduleUnversioned
);
437 EXPECT_FALSE(GitStat2
.bIsTagged
);
438 EXPECT_STREQ("7c3cbfe13a929d2291a574dca45e4fd2d2ac1aa6", GitStat2
.HeadHashReadable
);
439 EXPECT_STREQ("Sven Strickroth", GitStat2
.HeadAuthor
.c_str());
440 EXPECT_STREQ("email@cs-ware.de", GitStat2
.HeadEmail
.c_str());
442 EXPECT_TRUE(CStringUtils::WriteStringToTextFile(m_Dir
.GetTempDir() + L
"\\utf8-bom.txt", L
"modified!"));
443 EXPECT_TRUE(CStringUtils::WriteStringToTextFile(m_Dir
.GetTempDir() + L
"\\.GitWCRevignore", L
".GitWCRevignore\nutf8-bom.txt\n"));
446 EXPECT_EQ(0, GetStatus(m_Dir
.GetTempDir(), GitStat3
));
447 EXPECT_TRUE(GitStat3
.bIsGitItem
);
448 EXPECT_FALSE(GitStat3
.bIsUnborn
);
449 EXPECT_STREQ("master", GitStat3
.CurrentBranch
.c_str());
450 EXPECT_FALSE(GitStat3
.bHasSubmodule
);
451 EXPECT_FALSE(GitStat3
.HasMods
);
452 EXPECT_FALSE(GitStat3
.HasUnversioned
);
453 EXPECT_EQ(12u, GitStat3
.NumCommits
);
454 EXPECT_FALSE(GitStat3
.bHasSubmoduleMods
);
455 EXPECT_FALSE(GitStat3
.bHasSubmoduleNewCommits
);
456 EXPECT_FALSE(GitStat3
.bHasSubmoduleUnversioned
);
457 EXPECT_FALSE(GitStat3
.bIsTagged
);
458 EXPECT_STREQ("7c3cbfe13a929d2291a574dca45e4fd2d2ac1aa6", GitStat3
.HeadHashReadable
);
459 EXPECT_STREQ("Sven Strickroth", GitStat3
.HeadAuthor
.c_str());
460 EXPECT_STREQ("email@cs-ware.de", GitStat3
.HeadEmail
.c_str());
463 EXPECT_EQ(0, GetStatus(m_Dir
.GetTempDir() + L
"\\utf8-bom.txt", GitStat4
));
464 EXPECT_TRUE(GitStat4
.bIsGitItem
);
465 EXPECT_FALSE(GitStat4
.bIsUnborn
);
466 EXPECT_STREQ("master", GitStat4
.CurrentBranch
.c_str());
467 EXPECT_FALSE(GitStat4
.bHasSubmodule
);
468 EXPECT_TRUE(GitStat4
.HasMods
); // requesting a specific file which is also ignored, the unignoring has precedence!
469 EXPECT_FALSE(GitStat4
.HasUnversioned
);
470 EXPECT_EQ(12u, GitStat4
.NumCommits
);
471 EXPECT_FALSE(GitStat4
.bHasSubmoduleMods
);
472 EXPECT_FALSE(GitStat4
.bHasSubmoduleNewCommits
);
473 EXPECT_FALSE(GitStat4
.bHasSubmoduleUnversioned
);
474 EXPECT_FALSE(GitStat4
.bIsTagged
);
475 EXPECT_STREQ("7c3cbfe13a929d2291a574dca45e4fd2d2ac1aa6", GitStat4
.HeadHashReadable
);
476 EXPECT_STREQ("Sven Strickroth", GitStat4
.HeadAuthor
.c_str());
477 EXPECT_STREQ("email@cs-ware.de", GitStat4
.HeadEmail
.c_str());
480 EXPECT_EQ(0, GetStatus(m_Dir
.GetTempDir(), GitStat5
));
481 EXPECT_TRUE(GitStat5
.bIsGitItem
);
482 EXPECT_FALSE(GitStat5
.bIsUnborn
);
483 EXPECT_STREQ("master", GitStat5
.CurrentBranch
.c_str());
484 EXPECT_FALSE(GitStat5
.bHasSubmodule
);
485 EXPECT_FALSE(GitStat5
.HasMods
); // ignore changes in modified file
486 EXPECT_FALSE(GitStat5
.HasUnversioned
);
487 EXPECT_EQ(12u, GitStat5
.NumCommits
);
488 EXPECT_FALSE(GitStat5
.bHasSubmoduleMods
);
489 EXPECT_FALSE(GitStat5
.bHasSubmoduleNewCommits
);
490 EXPECT_FALSE(GitStat5
.bHasSubmoduleUnversioned
);
491 EXPECT_FALSE(GitStat5
.bIsTagged
);
492 EXPECT_STREQ("7c3cbfe13a929d2291a574dca45e4fd2d2ac1aa6", GitStat5
.HeadHashReadable
);
493 EXPECT_STREQ("Sven Strickroth", GitStat5
.HeadAuthor
.c_str());
494 EXPECT_STREQ("email@cs-ware.de", GitStat5
.HeadEmail
.c_str());
496 EXPECT_TRUE(CStringUtils::WriteStringToTextFile(m_Dir
.GetTempDir() + L
"\\ansi.txt", L
"modified!"));
498 EXPECT_EQ(0, GetStatus(m_Dir
.GetTempDir(), GitStat6
));
499 EXPECT_TRUE(GitStat6
.bIsGitItem
);
500 EXPECT_FALSE(GitStat6
.bIsUnborn
);
501 EXPECT_STREQ("master", GitStat6
.CurrentBranch
.c_str());
502 EXPECT_FALSE(GitStat6
.bHasSubmodule
);
503 EXPECT_TRUE(GitStat6
.HasMods
);
504 EXPECT_FALSE(GitStat6
.HasUnversioned
);
505 EXPECT_EQ(12u, GitStat6
.NumCommits
);
506 EXPECT_FALSE(GitStat6
.bHasSubmoduleMods
);
507 EXPECT_FALSE(GitStat6
.bHasSubmoduleNewCommits
);
508 EXPECT_FALSE(GitStat6
.bHasSubmoduleUnversioned
);
509 EXPECT_FALSE(GitStat6
.bIsTagged
);
510 EXPECT_STREQ("7c3cbfe13a929d2291a574dca45e4fd2d2ac1aa6", GitStat6
.HeadHashReadable
);
511 EXPECT_STREQ("Sven Strickroth", GitStat6
.HeadAuthor
.c_str());
512 EXPECT_STREQ("email@cs-ware.de", GitStat6
.HeadEmail
.c_str());
515 TEST_P(GitWCRevStatusCBasicGitWithTestRepoFixture
, PathNormalize
)
518 EXPECT_EQ(0, m_Git
.Run(L
"git.exe checkout -f master", &output
, nullptr, CP_UTF8
));
519 EXPECT_STRNE(L
"", output
);
522 EXPECT_EQ(0, GetStatusUnCleanPath(m_Dir
.GetTempDir() + L
"\\copy\\.\\ansi.txt", GitStat
));
523 EXPECT_TRUE(GitStat
.bIsGitItem
);
524 EXPECT_FALSE(GitStat
.bIsUnborn
);
525 EXPECT_STREQ("master", GitStat
.CurrentBranch
.c_str());
526 EXPECT_FALSE(GitStat
.bHasSubmodule
);
527 EXPECT_FALSE(GitStat
.HasMods
);
528 EXPECT_FALSE(GitStat
.HasUnversioned
);
529 EXPECT_EQ(12u, GitStat
.NumCommits
);
530 EXPECT_FALSE(GitStat
.bHasSubmoduleMods
);
531 EXPECT_FALSE(GitStat
.bHasSubmoduleNewCommits
);
532 EXPECT_FALSE(GitStat
.bHasSubmoduleUnversioned
);
533 EXPECT_FALSE(GitStat
.bIsTagged
);
534 EXPECT_STREQ("7c3cbfe13a929d2291a574dca45e4fd2d2ac1aa6", GitStat
.HeadHashReadable
);
535 EXPECT_STREQ("Sven Strickroth", GitStat
.HeadAuthor
.c_str());
536 EXPECT_STREQ("email@cs-ware.de", GitStat
.HeadEmail
.c_str());