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.
21 #include "VersioncheckParser.h"
22 #include "StringUtils.h"
25 TEST(CVersioncheckParser
, Invalid
)
27 CString tmpfile
= GetTempFile();
28 CStringUtils::WriteStringToTextFile(tmpfile
, L
"");
30 CVersioncheckParser parser
;
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
;
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());
70 EXPECT_STREQ(L
"TortoiseGit-2.3.4.0-64bit.msi", parser
.GetTortoiseGitMainfilename());
72 EXPECT_STREQ(L
"TortoiseGit-2.3.4.0-32bit.msi", parser
.GetTortoiseGitMainfilename());
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
;
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());
105 EXPECT_STREQ(L
"TortoiseGit-2.3.4.5-64bit.msi", parser
.GetTortoiseGitMainfilename());
107 EXPECT_STREQ(L
"TortoiseGit-2.3.4.5-32bit.msi", parser
.GetTortoiseGitMainfilename());
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
);
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
);
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
);
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
;
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());
159 EXPECT_STREQ(L
"TortoiseGit-preview-1.8.14.2-20150705-92b29f6-64bit.msi", parser
.GetTortoiseGitMainfilename());
161 EXPECT_STREQ(L
"TortoiseGit-preview-1.8.14.2-20150705-92b29f6-32bit.msi", parser
.GetTortoiseGitMainfilename());
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
;
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());
190 EXPECT_STREQ(L
"TortoiseGit-64bit-hfüx-hotfix.exe", parser
.GetTortoiseGitMainfilename());
192 EXPECT_STREQ(L
"TortoiseGit-32bit-hfüx-hotfix.exe", parser
.GetTortoiseGitMainfilename());
195 auto langs
= parser
.GetTortoiseGitLanguagePacks();
196 EXPECT_EQ(0U, langs
.size());