CommitDlg: Update index using libgit2 incrementally
[TortoiseGit.git] / test / UnitTests / libgit2Test.cpp
blobfcede0a28b2065b1a318fbd8940bec4f42ce34d1
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 #include "stdafx.h"
21 #include "StringUtils.h"
23 TEST(libgit2, Config)
25 CAutoTempDir tempdir;
26 CString testFile = tempdir.GetTempDir() + _T("\\config");
27 EXPECT_TRUE(CStringUtils::WriteStringToTextFile((LPCTSTR)testFile, L"[core]\nemail=dummy@example.com\ntrue=true\nfalse=false\n"));
28 CAutoConfig config(true);
29 EXPECT_EQ(0, git_config_add_file_ondisk(config, CUnicodeUtils::GetUTF8(testFile), GIT_CONFIG_LEVEL_LOCAL, 1));
30 bool ret = false;
31 EXPECT_EQ(0, config.GetBool(_T("core.true"), ret));
32 EXPECT_EQ(true, ret);
33 EXPECT_EQ(0, config.GetBool(_T("core.false"), ret));
34 EXPECT_EQ(false, ret);
35 EXPECT_EQ(-3, config.GetBool(_T("core.not-exist"), ret));
36 CString value;
37 EXPECT_EQ(0, config.GetString(_T("core.email"), value));
38 EXPECT_STREQ(_T("dummy@example.com"), value);
41 TEST(libgit2, TGitPatches)
43 CAutoTempDir tempdir;
45 git_repository_init_options options = GIT_REPOSITORY_INIT_OPTIONS_INIT;
46 options.flags = GIT_REPOSITORY_INIT_MKPATH | GIT_REPOSITORY_INIT_EXTERNAL_TEMPLATE;
47 CAutoRepository repo;
48 ASSERT_EQ(0, git_repository_init_ext(repo.GetPointer(), CUnicodeUtils::GetUTF8(tempdir.GetTempDir()), &options));
50 CAutoConfig config;
51 ASSERT_EQ(0, git_repository_config(config.GetPointer(), repo));
52 EXPECT_EQ(0, git_config_set_string(config, "core.autocrlf", "true"));
53 EXPECT_EQ(0, git_config_set_string(config, "core.safecrlf", "true"));
55 CAutoRepository repo2(tempdir.GetTempDir());
56 ASSERT_TRUE(repo2.IsValid());
57 CAutoIndex index;
58 ASSERT_EQ(0, git_repository_index(index.GetPointer(), repo2));
60 CString testFile = tempdir.GetTempDir() + _T("\\safecrlf-failure.txt");
61 EXPECT_TRUE(CStringUtils::WriteStringToTextFile((LPCTSTR)testFile, L"crlf\r\ncrlf\r\n"));
62 EXPECT_EQ(0, git_index_add_bypath(index, "safecrlf-failure.txt"));
64 EXPECT_TRUE(CStringUtils::WriteStringToTextFile((LPCTSTR)testFile, L"lf\nlf\n"));
65 EXPECT_EQ(-1, git_index_add_bypath(index, "safecrlf-failure.txt"));
67 EXPECT_TRUE(CStringUtils::WriteStringToTextFile((LPCTSTR)testFile, L"crlf\r\ncr\rcrlf\r\n"));
68 EXPECT_EQ(0, git_index_add_bypath(index, "safecrlf-failure.txt"));
70 EXPECT_EQ(0, git_config_set_string(config, "core.autocrlf", "input"));
71 CAutoRepository repo3(tempdir.GetTempDir());
72 ASSERT_TRUE(repo3.IsValid());
73 ASSERT_EQ(0, git_repository_index(index.GetPointer(), repo3));
75 EXPECT_TRUE(CStringUtils::WriteStringToTextFile((LPCTSTR)testFile, L"crlf\r\ncrlf\r\n"));
76 EXPECT_EQ(-1, git_index_add_bypath(index, "safecrlf-failure.txt"));