Show stash count in delete all stash confirmation message
[TortoiseGit.git] / test / UnitTests / RepositoryFixtures.h
blob81a06ac3e516c5d0c42de9313ee0fc62268a6920
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.
20 #pragma once
21 #include "Git.h"
22 #include "StringUtils.h"
23 #include "PathUtils.h"
24 #include "DirFileEnum.h"
26 enum config
28 LIBGIT2_ALL,
29 LIBGIT2,
30 LIBGIT,
31 GIT_CLI,
34 class CBasicGitFixture : public ::testing::TestWithParam<config>
36 protected:
37 virtual void SetUp()
39 switch (GetParam())
41 case LIBGIT2_ALL:
42 m_Git.m_IsUseLibGit2 = true;
43 m_Git.m_IsUseLibGit2_mask = 0xffffffff;
44 m_Git.m_IsUseGitDLL = false;
45 break;
46 case LIBGIT2:
47 m_Git.m_IsUseLibGit2 = true;
48 m_Git.m_IsUseLibGit2_mask = DEFAULT_USE_LIBGIT2_MASK;
49 m_Git.m_IsUseGitDLL = false;
50 break;
51 case LIBGIT:
52 m_Git.m_IsUseLibGit2 = false;
53 m_Git.m_IsUseLibGit2_mask = 0;
54 m_Git.m_IsUseGitDLL = true;
55 break;
56 case GIT_CLI:
57 m_Git.m_IsUseLibGit2 = false;
58 m_Git.m_IsUseLibGit2_mask = 0;
59 m_Git.m_IsUseGitDLL = false;
61 m_Git.m_CurrentDir = m_Dir.GetTempDir();
62 // some methods rely on g_Git, so set values there as well
63 g_Git.m_IsGitDllInited = false;
64 g_Git.m_CurrentDir = m_Git.m_CurrentDir;
65 g_Git.m_IsUseGitDLL = m_Git.m_IsUseGitDLL;
66 g_Git.m_IsUseLibGit2 = m_Git.m_IsUseLibGit2;
67 g_Git.m_IsUseLibGit2_mask = m_Git.m_IsUseLibGit2_mask;
68 // libgit relies on CWD being set to working tree
69 SetCurrentDirectory(m_Git.m_CurrentDir);
72 virtual void TearDown()
74 SetCurrentDirectory(CPathUtils::GetAppDirectory());
77 public:
78 CGit m_Git;
79 CAutoTempDir m_Dir;
82 class CBasicGitWithTestRepoFixture : public CBasicGitFixture
84 protected:
85 CBasicGitWithTestRepoFixture()
87 prefix = _T("\\.git");
90 virtual void SetUp()
92 CBasicGitFixture::SetUp();
93 CString resourcesDir = CPathUtils::GetAppDirectory() + _T("\\resources");
94 if (!PathIsDirectory(resourcesDir))
96 resourcesDir = CPathUtils::GetAppDirectory() + _T("\\..\\..\\..\\test\\UnitTests\\resources");
97 ASSERT_TRUE(PathIsDirectory(resourcesDir));
99 if (!prefix.IsEmpty())
100 EXPECT_TRUE(CreateDirectory(m_Dir.GetTempDir() + prefix, nullptr));
101 CString repoDir = resourcesDir + _T("\\git-repo1");
102 CDirFileEnum finder(repoDir);
103 bool isDir;
104 CString filepath;
105 while (finder.NextFile(filepath, &isDir))
107 CString relpath = filepath.Mid(repoDir.GetLength());
108 if (isDir)
109 EXPECT_TRUE(CreateDirectory(m_Dir.GetTempDir() + prefix + relpath, nullptr));
110 else
111 EXPECT_TRUE(CopyFile(filepath, m_Dir.GetTempDir() + prefix + relpath, false));
114 CString configFile = m_Dir.GetTempDir() + prefix + _T("\\config");
115 CString text;
116 ASSERT_TRUE(CStringUtils::ReadStringFromTextFile(configFile, text));
117 text += _T("\n[core]\n autocrlf = false\n[user]\n name = User\n email = user@example.com\n");
118 EXPECT_TRUE(CStringUtils::WriteStringToTextFile((LPCTSTR)configFile, (LPCTSTR)text));
120 CString prefix;
123 class CBasicGitWithTestRepoBareFixture : public CBasicGitWithTestRepoFixture
125 protected:
126 virtual void SetUp()
128 prefix.Empty();
129 CBasicGitWithTestRepoFixture::SetUp();
131 DeleteFile(m_Dir.GetTempDir() + _T("\\index"));
132 CString configFile = m_Dir.GetTempDir() + _T("\\config");
133 CString text;
134 ASSERT_TRUE(CStringUtils::ReadStringFromTextFile(configFile, text));
135 EXPECT_EQ(1, text.Replace(_T("bare = false"), _T("bare = true")));
136 EXPECT_TRUE(CStringUtils::WriteStringToTextFile((LPCTSTR)configFile, (LPCTSTR)text));
140 class CBasicGitWithEmptyRepositoryFixture : public CBasicGitFixture
142 protected:
143 virtual void SetUp()
145 CBasicGitFixture::SetUp();
146 CString output;
147 EXPECT_EQ(0, m_Git.Run(_T("git.exe init"), &output, CP_UTF8));
148 EXPECT_FALSE(output.IsEmpty());
149 output.Empty();
150 EXPECT_EQ(0, m_Git.Run(_T("git.exe config core.autocrlf false"), &output, CP_UTF8));
151 EXPECT_TRUE(output.IsEmpty());
152 output.Empty();
153 EXPECT_EQ(0, m_Git.Run(_T("git.exe config user.name User"), &output, CP_UTF8));
154 EXPECT_TRUE(output.IsEmpty());
155 output.Empty();
156 EXPECT_EQ(0, m_Git.Run(_T("git.exe config user.email user@example.com"), &output, CP_UTF8));
157 EXPECT_TRUE(output.IsEmpty());
161 class CBasicGitWithEmptyBareRepositoryFixture : public CBasicGitFixture
163 protected:
164 virtual void SetUp()
166 CBasicGitFixture::SetUp();
167 CString output;
168 EXPECT_EQ(0, m_Git.Run(_T("git.exe init --bare"), &output, CP_UTF8));
169 EXPECT_FALSE(output.IsEmpty());