8static Q_LOGGING_CATEGORY(log,
"RabbitCommon.Test.Updater")
14void CUnitTests::initTestCase()
17void CUnitTests::initTestCase_data()
20void CUnitTests::cleanupTestCase()
23void CUnitTests::init()
26void CUnitTests::cleanup()
29void CUnitTests::testDownloadFileNoExistLocalFile()
31 QString szNoExitFile =
"data/nofile";
32 QString szExitFile =
"data/redirect.json";
34 urls << QUrl::fromLocalFile(szNoExitFile) << QUrl::fromLocalFile(szExitFile);
36 QObject::connect(&dwonload, &RabbitCommon::CDownload::sigError,
37 [&](
int nRet,
const QString msg){
38 QVERIFY(tr(
"The file doesn't exists: ") + szNoExitFile == msg && -6 == nRet);
41 [&](
const QString szPath){
42 QVERIFY(szExitFile == szPath);
49void CUnitTests::testDownloadFileExistLocalFile()
51 QString szFile =
"data/nofile";
55 QObject::connect(&dwonload, &RabbitCommon::CDownload::sigError,
56 [&](
int nRet,
const QString msg){
60 [&](
const QString szFile){
67void CUnitTests::testCFrmUpdaterCompareVersion()
102 QVERIFY(updater.
CompareVersion(
"v1.1.20-alpha",
"v1.1.20-alpha") == 0);
106 QVERIFY(updater.
CompareVersion(
"v1.1.20~alpha",
"v1.1.20~alpha") == 0);
110 QVERIFY(updater.
CompareVersion(
"v1.1.20_alpha",
"v1.1.20_alpha") == 0);
112 QVERIFY(updater.
CompareVersion(
"v1.1.20-alpha",
"v1.1.20_alpha") == 0);
113 QVERIFY(updater.
CompareVersion(
"v1.1.20-alpha",
"v1.1.20~alpha") == 0);
114 QVERIFY(updater.
CompareVersion(
"v1.1.20_alpha",
"v1.1.20~alpha") == 0);
117void CUnitTests::test_os()
119 QString szOS = QSysInfo::productType();
120 qDebug(log) <<
"QSysInfo::productType():" << szOS;
121#if defined(Q_OS_WINDOWS) || defined(Q_OS_CYGWIN)
122 QVERIFY(
"windows" == szOS);
123#elif defined(Q_OS_ANDROID)
124 QVERIFY(
"android" == szOS);
125#elif defined(Q_OS_MACOS)
126 #if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
127 QVERIFY(
"macos" == szOS);
129 QVERIFY(
"osx" == szOS);
131#elif defined(Q_OS_LINUX)
132 QVERIFY(
"ubuntu" == szOS ||
"debian" == szOS);
133#elif defined(Q_OS_UNIX)
134 QVERIFY(
"osx" == szOS);
138void CUnitTests::test_architecture()
140 qDebug(log) <<
"Build architecture:" << QSysInfo::buildCpuArchitecture()
141 <<
"Current architercture:" << QSysInfo::currentCpuArchitecture();
142 QVERIFY(QSysInfo::buildCpuArchitecture()
143 == QSysInfo::currentCpuArchitecture());
146void CUnitTests::test_joson()
148 QJsonArray url_windows;
149 url_windows.append(
"github.com/windows");
150 url_windows.append(
"gitlab.com/windows");
152 QJsonObject file_windows;
153 file_windows.insert(
"os",
"windows");
154 file_windows.insert(
"os_min_version",
"7");
155 file_windows.insert(
"arch",
"x86");
156 file_windows.insert(
"arch_version",
"1");
157 file_windows.insert(
"url", url_windows);
159 QJsonArray url_linux;
160 url_linux.append(
"gitlab.com/linux");
161 url_linux.append(
"github.com/linux");
163 QJsonObject file_linux;
164 file_linux.insert(
"os",
"linux");
165 file_linux.insert(
"arch",
"x64");
166 file_linux.insert(
"url", url_linux);
169 files.append(file_windows);
170 files.append(file_linux);
173 version.insert(
"version",
"2.0.0");
174 version.insert(
"min_update_version",
"1.0.0");
175 version.insert(
"info",
"RabbitCommon");
176 version.insert(
"time", QDateTime::currentDateTime().toString());
177 version.insert(
"home",
"github.com/kanglin/rabbitcommon");
178 version.insert(
"force",
false);
179 version.insert(
"files", files);
181 QJsonDocument updater, doc1;
183 updater.setObject(version);
184 qDebug(log) << updater.toJson();
186 doc1 = QJsonDocument::fromJson(updater.toJson(), &err);
188 QVERIFY(updater == doc1);
192void CUnitTests::test_redirect_json_file()
195 QVector<CFrmUpdater::CONFIG_REDIRECT> conf;
201 QVERIFY(conf.length() == 5);
203 QVERIFY(conf[0].szVersion ==
"v2.0.0");
204 QVERIFY(conf[0].szMinUpdateVersion ==
"v0.0.26");
205 QVERIFY(conf[0].files.isEmpty());
207 QVERIFY(conf[1].szVersion ==
"v0.0.26");
208 QVERIFY(conf[1].szMinUpdateVersion ==
"v0.0.20");
209 QVERIFY(conf[1].files.length() == 1);
210 QVERIFY(conf[1].files[0].szSystem.isEmpty());
211 QVERIFY(conf[1].files[0].szArchitecture.isEmpty());
212 QVERIFY(conf[1].files[0].urls.size() == 1);
213 QVERIFY(conf[1].files[0].urls[0] == QUrl::fromLocalFile(
"data/update_locale.json"));
215 QVERIFY(conf[2].szVersion ==
"v0.0.20");
216 QVERIFY(conf[2].szMinUpdateVersion ==
"v0.0.10");
217 QVERIFY(conf[2].files.length() == 4);
218 QVERIFY(conf[2].files[0].szSystem ==
"windows");
219 QVERIFY(conf[2].files[0].szArchitecture.isEmpty());
220 QVERIFY(conf[2].files[0].urls.size() == 1);
221 QVERIFY(conf[2].files[0].urls[0] == QUrl::fromLocalFile(
"data/update_windows.json"));
222 QVERIFY(conf[2].files[1].szSystem ==
"ubuntu");
223 QVERIFY(conf[2].files[1].szArchitecture ==
"x86_64");
224 QVERIFY(conf[2].files[1].urls.size() == 1);
225 QVERIFY(conf[2].files[1].urls[0] == QUrl::fromLocalFile(
"data/update_ubuntu.json"));
226 QVERIFY(conf[2].files[2].szSystem ==
"macos");
227 QVERIFY(conf[2].files[2].szArchitecture ==
"x86_64");
228 QVERIFY(conf[2].files[2].urls.size() == 1);
229 QVERIFY(conf[2].files[2].urls[0] == QUrl::fromLocalFile(
"data/update_macos.json"));
230 QVERIFY(conf[2].files[3].szSystem ==
"osx");
231 QVERIFY(conf[2].files[3].szArchitecture ==
"x86_64");
232 QVERIFY(conf[2].files[3].urls.size() == 1);
233 QVERIFY(conf[2].files[3].urls[0] == QUrl::fromLocalFile(
"data/update_macos.json"));
235 QVERIFY(conf[3].szVersion ==
"v0.0.10");
236 QVERIFY(conf[3].szMinUpdateVersion ==
"v0.0.5");
237 QVERIFY(conf[3].files.length() == 1);
239 QVERIFY(conf[4].szVersion ==
"v0.0.5");
240 QVERIFY(conf[4].szMinUpdateVersion.isEmpty());
241 QVERIFY(conf[4].files.length() == 2);
242 QVERIFY(conf[4].files[0].szSystem ==
"windows");
243 QVERIFY(conf[4].files[0].szArchitecture ==
"x86");
244 QVERIFY(conf[4].files[0].urls.size() == 2);
245 QVERIFY(conf[4].files[1].szSystem ==
"ubuntu");
246 QVERIFY(conf[4].files[1].szArchitecture ==
"x86_64");
247 QVERIFY(conf[4].files[1].urls.size() == 2);
int CompareVersion(const QString &newVersion, const QString ¤tVersion)
CFrmUpdater::CompareVersion.
int GetRedirectFromFile(const QString &szFile, QVector< CONFIG_REDIRECT > &conf)
Get redirect configure from file.
Download the same file from multiple URLs.
int Start(QVector< QUrl > urls, QString szFileName=QString(), bool bSequence=false)
void sigFinished(const QString szFile)