7static Q_LOGGING_CATEGORY(log,
"RabbitCommon.Test.Updater")
13void CUnitTests::initTestCase()
16void CUnitTests::initTestCase_data()
19void CUnitTests::cleanupTestCase()
22void CUnitTests::init()
25void CUnitTests::cleanup()
28void CUnitTests::testDownloadFileNoExistLocalFile()
30 QString szNoExitFile =
"data/nofile";
31 QString szExitFile =
"data/redirect.json";
33 urls << QUrl::fromLocalFile(szNoExitFile) << QUrl::fromLocalFile(szExitFile);
35 QObject::connect(&dwonload, &RabbitCommon::CDownload::sigError,
36 [&](
int nRet,
const QString msg){
37 QVERIFY(tr(
"The file is not exists: ") + szNoExitFile == msg && -6 == nRet);
40 [&](
const QString szPath){
41 QVERIFY(szExitFile == szPath);
48void CUnitTests::testDownloadFileExistLocalFile()
50 QString szFile =
"data/nofile";
54 QObject::connect(&dwonload, &RabbitCommon::CDownload::sigError,
55 [&](
int nRet,
const QString msg){
59 [&](
const QString szFile){
66void CUnitTests::testCFrmUpdaterCompareVersion()
101void CUnitTests::test_os()
103 QString szOS = QSysInfo::productType();
104 qDebug(log) <<
"QSysInfo::productType():" << szOS;
105#if defined(Q_OS_WINDOWS) || defined(Q_OS_CYGWIN)
106 QVERIFY(
"windows" == szOS);
107#elif defined(Q_OS_ANDROID)
108 QVERIFY(
"android" == szOS);
109#elif defined(Q_OS_MACOS)
110 #if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
111 QVERIFY(
"macos" == szOS);
113 QVERIFY(
"osx" == szOS);
115#elif defined(Q_OS_LINUX)
116 QVERIFY(
"ubuntu" == szOS ||
"debian" == szOS);
117#elif defined(Q_OS_UNIX)
118 QVERIFY(
"osx" == szOS);
122void CUnitTests::test_architecture()
124 qDebug(log) <<
"Build architecture:" << QSysInfo::buildCpuArchitecture()
125 <<
"Current architercture:" << QSysInfo::currentCpuArchitecture();
126 QVERIFY(QSysInfo::buildCpuArchitecture()
127 == QSysInfo::currentCpuArchitecture());
130void CUnitTests::test_joson()
132 QJsonArray url_windows;
133 url_windows.append(
"github.com/windows");
134 url_windows.append(
"gitlab.com/windows");
136 QJsonObject file_windows;
137 file_windows.insert(
"os",
"windows");
138 file_windows.insert(
"os_min_version",
"7");
139 file_windows.insert(
"arch",
"x86");
140 file_windows.insert(
"arch_version",
"1");
141 file_windows.insert(
"url", url_windows);
143 QJsonArray url_linux;
144 url_linux.append(
"gitlab.com/linux");
145 url_linux.append(
"github.com/linux");
147 QJsonObject file_linux;
148 file_linux.insert(
"os",
"linux");
149 file_linux.insert(
"arch",
"x64");
150 file_linux.insert(
"url", url_linux);
153 files.append(file_windows);
154 files.append(file_linux);
157 version.insert(
"version",
"2.0.0");
158 version.insert(
"min_update_version",
"1.0.0");
159 version.insert(
"info",
"RabbitCommon");
160 version.insert(
"time", QDateTime::currentDateTime().toString());
161 version.insert(
"home",
"github.com/kanglin/rabbitcommon");
162 version.insert(
"force",
false);
163 version.insert(
"files", files);
165 QJsonDocument updater, doc1;
167 updater.setObject(version);
168 qDebug(log) << updater.toJson();
170 doc1 = QJsonDocument::fromJson(updater.toJson(), &err);
172 QVERIFY(updater == doc1);
176void CUnitTests::test_redirect_json_file()
179 QVector<CFrmUpdater::CONFIG_REDIRECT> conf;
185 QVERIFY(conf.length() == 5);
187 QVERIFY(conf[0].szVersion ==
"v2.0.0");
188 QVERIFY(conf[0].szMinUpdateVersion ==
"v0.0.26");
189 QVERIFY(conf[0].files.isEmpty());
191 QVERIFY(conf[1].szVersion ==
"v0.0.26");
192 QVERIFY(conf[1].szMinUpdateVersion ==
"v0.0.20");
193 QVERIFY(conf[1].files.length() == 1);
194 QVERIFY(conf[1].files[0].szSystem.isEmpty());
195 QVERIFY(conf[1].files[0].szArchitecture.isEmpty());
196 QVERIFY(conf[1].files[0].urls.size() == 1);
197 QVERIFY(conf[1].files[0].urls[0] == QUrl::fromLocalFile(
"data/update_locale.json"));
199 QVERIFY(conf[2].szVersion ==
"v0.0.20");
200 QVERIFY(conf[2].szMinUpdateVersion ==
"v0.0.10");
201 QVERIFY(conf[2].files.length() == 4);
202 QVERIFY(conf[2].files[0].szSystem ==
"windows");
203 QVERIFY(conf[2].files[0].szArchitecture.isEmpty());
204 QVERIFY(conf[2].files[0].urls.size() == 1);
205 QVERIFY(conf[2].files[0].urls[0] == QUrl::fromLocalFile(
"data/update_windows.json"));
206 QVERIFY(conf[2].files[1].szSystem ==
"ubuntu");
207 QVERIFY(conf[2].files[1].szArchitecture ==
"x86_64");
208 QVERIFY(conf[2].files[1].urls.size() == 1);
209 QVERIFY(conf[2].files[1].urls[0] == QUrl::fromLocalFile(
"data/update_ubuntu.json"));
210 QVERIFY(conf[2].files[2].szSystem ==
"macos");
211 QVERIFY(conf[2].files[2].szArchitecture ==
"x86_64");
212 QVERIFY(conf[2].files[2].urls.size() == 1);
213 QVERIFY(conf[2].files[2].urls[0] == QUrl::fromLocalFile(
"data/update_macos.json"));
214 QVERIFY(conf[2].files[3].szSystem ==
"osx");
215 QVERIFY(conf[2].files[3].szArchitecture ==
"x86_64");
216 QVERIFY(conf[2].files[3].urls.size() == 1);
217 QVERIFY(conf[2].files[3].urls[0] == QUrl::fromLocalFile(
"data/update_macos.json"));
219 QVERIFY(conf[3].szVersion ==
"v0.0.10");
220 QVERIFY(conf[3].szMinUpdateVersion ==
"v0.0.5");
221 QVERIFY(conf[3].files.length() == 1);
223 QVERIFY(conf[4].szVersion ==
"v0.0.5");
224 QVERIFY(conf[4].szMinUpdateVersion.isEmpty());
225 QVERIFY(conf[4].files.length() == 2);
226 QVERIFY(conf[4].files[0].szSystem ==
"windows");
227 QVERIFY(conf[4].files[0].szArchitecture ==
"x86");
228 QVERIFY(conf[4].files[0].urls.size() == 2);
229 QVERIFY(conf[4].files[1].szSystem ==
"ubuntu");
230 QVERIFY(conf[4].files[1].szArchitecture ==
"x86_64");
231 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)