Fix '==': signed/unsigned mismatch warning
[TortoiseGit.git] / test / UnitTests / VersioncheckParserTest.cpp
blobb9a1324fee8b5d4f7f151a899b4bc75e8a2e2ba0
1 // TortoiseGit - a Windows shell extension for easy version control
3 // Copyright (C) 2016, 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.
20 #include "stdafx.h"
21 #include "VersioncheckParser.h"
22 #include "StringUtils.h"
23 #include "Git.h"
25 TEST(CVersioncheckParser, Invalid)
27 CString tmpfile = GetTempFile();
28 CStringUtils::WriteStringToTextFile(tmpfile, L"");
30 CVersioncheckParser parser;
31 CString err;
32 EXPECT_FALSE(parser.Load(tmpfile, err));
34 CStringUtils::WriteStringToTextFile(tmpfile, L"something\nversion\nblabla");
35 EXPECT_FALSE(parser.Load(tmpfile, err));
37 CStringUtils::WriteStringToTextFile(tmpfile, L"[TortoiseGit]\nversion=def");
38 EXPECT_FALSE(parser.Load(tmpfile, err));
40 CStringUtils::WriteStringToTextFile(tmpfile, L"[TortoiseGit]\nversion=d4ef");
41 EXPECT_FALSE(parser.Load(tmpfile, err));
44 TEST(CVersioncheckParser, ParseTestMinimal)
46 CString tmpfile = GetTempFile();
47 CStringUtils::WriteStringToTextFile(tmpfile, L"[TortoiseGit]\r\nversion=2.3.4.0\r\n");
49 CVersioncheckParser parser;
50 CString err;
51 EXPECT_TRUE(parser.Load(tmpfile, err));
53 auto version = parser.GetTortoiseGitVersion();
54 EXPECT_STREQ(version.version, version.version_for_filename);
55 EXPECT_EQ(2U, version.major);
56 EXPECT_EQ(3U, version.minor);
57 EXPECT_EQ(4U, version.micro);
58 EXPECT_EQ(0U, version.build);
60 EXPECT_STREQ(L"", parser.GetTortoiseGitInfoText());
61 EXPECT_STREQ(L"", parser.GetTortoiseGitInfoTextURL());
63 EXPECT_STREQ(L"http://updater.download.tortoisegit.org/tgit/2.3.4.0/", parser.GetTortoiseGitBaseURL());
64 EXPECT_STREQ(L"https://tortoisegit.org/issue/%BUGID%", parser.GetTortoiseGitIssuesURL());
65 EXPECT_STREQ(L"https://versioncheck.tortoisegit.org/changelog.txt", parser.GetTortoiseGitChangelogURL());
67 EXPECT_FALSE(parser.GetTortoiseGitIsHotfix());
69 #if WIN64
70 EXPECT_STREQ(L"TortoiseGit-2.3.4.0-64bit.msi", parser.GetTortoiseGitMainfilename());
71 #else
72 EXPECT_STREQ(L"TortoiseGit-2.3.4.0-32bit.msi", parser.GetTortoiseGitMainfilename());
73 #endif
75 auto langs = parser.GetTortoiseGitLanguagePacks();
76 EXPECT_EQ(0U, langs.size());
79 TEST(CVersioncheckParser, ParseTestRelease)
81 CString tmpfile = GetTempFile();
82 CStringUtils::WriteStringToTextFile(tmpfile, L"[TortoiseGit]\nversion=2.3.4.5\ninfotext=\"Hallo\\ntest\"\ninfotexturl=someurl\nissuesurl=https://tortoisegit.org/issue/%BUGID%\r\nbaseurl=https://updater.download.tortoisegit.org/tgit/2.3.0.0/\nlangs=\"1031;de\"\nlangs=\"1046;pt_BR\"\nlangs=\"2074;sr-latin\"\nlangs=\"1028;zh_TW\"");
84 CVersioncheckParser parser;
85 CString err;
86 EXPECT_TRUE(parser.Load(tmpfile, err));
88 auto version = parser.GetTortoiseGitVersion();
89 EXPECT_STREQ(version.version, version.version_for_filename);
90 EXPECT_EQ(2U, version.major);
91 EXPECT_EQ(3U, version.minor);
92 EXPECT_EQ(4U, version.micro);
93 EXPECT_EQ(5U, version.build);
95 EXPECT_STREQ(L"Hallo\ntest", parser.GetTortoiseGitInfoText());
96 EXPECT_STREQ(L"someurl", parser.GetTortoiseGitInfoTextURL());
98 EXPECT_STREQ(L"https://updater.download.tortoisegit.org/tgit/2.3.0.0/", parser.GetTortoiseGitBaseURL());
99 EXPECT_STREQ(L"https://tortoisegit.org/issue/%BUGID%", parser.GetTortoiseGitIssuesURL());
100 EXPECT_STREQ(L"https://versioncheck.tortoisegit.org/changelog.txt", parser.GetTortoiseGitChangelogURL());
102 EXPECT_FALSE(parser.GetTortoiseGitIsHotfix());
104 #if WIN64
105 EXPECT_STREQ(L"TortoiseGit-2.3.4.5-64bit.msi", parser.GetTortoiseGitMainfilename());
106 #else
107 EXPECT_STREQ(L"TortoiseGit-2.3.4.5-32bit.msi", parser.GetTortoiseGitMainfilename());
108 #endif
110 auto langs = parser.GetTortoiseGitLanguagePacks();
111 ASSERT_EQ(4U, langs.size());
113 EXPECT_EQ(1031U, langs[0].m_LocaleID);
114 EXPECT_EQ(1046U, langs[1].m_LocaleID);
115 EXPECT_EQ(2074U, langs[2].m_LocaleID);
116 EXPECT_EQ(1028U, langs[3].m_LocaleID);
118 EXPECT_STREQ(L"de", langs[0].m_LangCode);
119 EXPECT_STREQ(L"pt_BR", langs[1].m_LangCode);
120 EXPECT_STREQ(L"sr-latin", langs[2].m_LangCode);
121 EXPECT_STREQ(L"zh_TW", langs[3].m_LangCode);
123 #if WIN64
124 EXPECT_STREQ(L"TortoiseGit-LanguagePack-2.3.4.5-64bit-de.msi", langs[0].m_filename);
125 EXPECT_STREQ(L"TortoiseGit-LanguagePack-2.3.4.5-64bit-pt_BR.msi", langs[1].m_filename);
126 EXPECT_STREQ(L"TortoiseGit-LanguagePack-2.3.4.5-64bit-sr-latin.msi", langs[2].m_filename);
127 EXPECT_STREQ(L"TortoiseGit-LanguagePack-2.3.4.5-64bit-zh_TW.msi", langs[3].m_filename);
128 #else
129 EXPECT_STREQ(L"TortoiseGit-LanguagePack-2.3.4.5-32bit-de.msi", langs[0].m_filename);
130 EXPECT_STREQ(L"TortoiseGit-LanguagePack-2.3.4.5-32bit-pt_BR.msi", langs[1].m_filename);
131 EXPECT_STREQ(L"TortoiseGit-LanguagePack-2.3.4.5-32bit-sr-latin.msi", langs[2].m_filename);
132 EXPECT_STREQ(L"TortoiseGit-LanguagePack-2.3.4.5-32bit-zh_TW.msi", langs[3].m_filename);
133 #endif
136 TEST(CVersioncheckParser, ParseTestPreview)
138 CString tmpfile = GetTempFile();
139 CStringUtils::WriteStringToTextFile(tmpfile, L"[TortoiseGit]\nversion=1.8.14.2\nversionstring=preview-1.8.14.2-20150705-92b29f6\nchangelogurl=https://versioncheck.tortoisegit.org/changelog-preview.txt\nbaseurl=http://updater.download.tortoisegit.org/tgit/previews/");
141 CVersioncheckParser parser;
142 CString err;
143 EXPECT_TRUE(parser.Load(tmpfile, err));
145 auto version = parser.GetTortoiseGitVersion();
146 EXPECT_STREQ(L"preview-1.8.14.2-20150705-92b29f6", version.version_for_filename);
147 EXPECT_EQ(1U, version.major);
148 EXPECT_EQ(8U, version.minor);
149 EXPECT_EQ(14U, version.micro);
150 EXPECT_EQ(2U, version.build);
152 EXPECT_STREQ(L"http://updater.download.tortoisegit.org/tgit/previews/", parser.GetTortoiseGitBaseURL());
153 EXPECT_STREQ(L"https://tortoisegit.org/issue/%BUGID%", parser.GetTortoiseGitIssuesURL());
154 EXPECT_STREQ(L"https://versioncheck.tortoisegit.org/changelog-preview.txt", parser.GetTortoiseGitChangelogURL());
156 EXPECT_FALSE(parser.GetTortoiseGitIsHotfix());
158 #if WIN64
159 EXPECT_STREQ(L"TortoiseGit-preview-1.8.14.2-20150705-92b29f6-64bit.msi", parser.GetTortoiseGitMainfilename());
160 #else
161 EXPECT_STREQ(L"TortoiseGit-preview-1.8.14.2-20150705-92b29f6-32bit.msi", parser.GetTortoiseGitMainfilename());
162 #endif
164 auto langs = parser.GetTortoiseGitLanguagePacks();
165 EXPECT_EQ(0U, langs.size());
168 TEST(CVersioncheckParser, ParseTestHotfix)
170 CString tmpfile = GetTempFile();
171 CStringUtils::WriteStringToTextFile(tmpfile, L"[TortoiseGit]\nversion=1.8.14.2\nversionstring=hfüx\nmainfilename=TortoiseGit-%2!s!bit-%1!s!-hotfix.exe\nhotfix=true\nissuesurl=");
173 CVersioncheckParser parser;
174 CString err;
175 EXPECT_TRUE(parser.Load(tmpfile, err));
177 auto version = parser.GetTortoiseGitVersion();
178 EXPECT_STREQ(L"hfüx", version.version_for_filename);
179 EXPECT_EQ(1U, version.major);
180 EXPECT_EQ(8U, version.minor);
181 EXPECT_EQ(14U, version.micro);
182 EXPECT_EQ(2U, version.build);
184 EXPECT_STREQ(L"http://updater.download.tortoisegit.org/tgit/hfüx/", parser.GetTortoiseGitBaseURL());
185 EXPECT_TRUE(parser.GetTortoiseGitIsHotfix());
187 EXPECT_STREQ(L"", parser.GetTortoiseGitIssuesURL());
189 #if WIN64
190 EXPECT_STREQ(L"TortoiseGit-64bit-hfüx-hotfix.exe", parser.GetTortoiseGitMainfilename());
191 #else
192 EXPECT_STREQ(L"TortoiseGit-32bit-hfüx-hotfix.exe", parser.GetTortoiseGitMainfilename());
193 #endif
195 auto langs = parser.GetTortoiseGitLanguagePacks();
196 EXPECT_EQ(0U, langs.size());