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 is not 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()
102void CUnitTests::test_os()
104 QString szOS = QSysInfo::productType();
105 qDebug(log) <<
"QSysInfo::productType():" << szOS;
106#if defined(Q_OS_WINDOWS) || defined(Q_OS_CYGWIN)
107 QVERIFY(
"windows" == szOS);
108#elif defined(Q_OS_ANDROID)
109 QVERIFY(
"android" == szOS);
110#elif defined(Q_OS_MACOS)
111 #if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
112 QVERIFY(
"macos" == szOS);
114 QVERIFY(
"osx" == szOS);
116#elif defined(Q_OS_LINUX)
117 QVERIFY(
"ubuntu" == szOS ||
"debian" == szOS);
118#elif defined(Q_OS_UNIX)
119 QVERIFY(
"osx" == szOS);
123void CUnitTests::test_architecture()
125 qDebug(log) <<
"Build architecture:" << QSysInfo::buildCpuArchitecture()
126 <<
"Current architercture:" << QSysInfo::currentCpuArchitecture();
127 QVERIFY(QSysInfo::buildCpuArchitecture()
128 == QSysInfo::currentCpuArchitecture());
131void CUnitTests::test_joson()
133 QJsonArray url_windows;
134 url_windows.append(
"github.com/windows");
135 url_windows.append(
"gitlab.com/windows");
137 QJsonObject file_windows;
138 file_windows.insert(
"os",
"windows");
139 file_windows.insert(
"os_min_version",
"7");
140 file_windows.insert(
"arch",
"x86");
141 file_windows.insert(
"arch_version",
"1");
142 file_windows.insert(
"url", url_windows);
144 QJsonArray url_linux;
145 url_linux.append(
"gitlab.com/linux");
146 url_linux.append(
"github.com/linux");
148 QJsonObject file_linux;
149 file_linux.insert(
"os",
"linux");
150 file_linux.insert(
"arch",
"x64");
151 file_linux.insert(
"url", url_linux);
154 files.append(file_windows);
155 files.append(file_linux);
158 version.insert(
"version",
"2.0.0");
159 version.insert(
"min_update_version",
"1.0.0");
160 version.insert(
"info",
"RabbitCommon");
161 version.insert(
"time", QDateTime::currentDateTime().toString());
162 version.insert(
"home",
"github.com/kanglin/rabbitcommon");
163 version.insert(
"force",
false);
164 version.insert(
"files", files);
166 QJsonDocument updater, doc1;
168 updater.setObject(version);
169 qDebug(log) << updater.toJson();
171 doc1 = QJsonDocument::fromJson(updater.toJson(), &err);
173 QVERIFY(updater == doc1);
177void CUnitTests::test_redirect_json_file()
180 QVector<CFrmUpdater::CONFIG_REDIRECT> conf;
186 QVERIFY(conf.length() == 5);
188 QVERIFY(conf[0].szVersion ==
"v2.0.0");
189 QVERIFY(conf[0].szMinUpdateVersion ==
"v0.0.26");
190 QVERIFY(conf[0].files.isEmpty());
192 QVERIFY(conf[1].szVersion ==
"v0.0.26");
193 QVERIFY(conf[1].szMinUpdateVersion ==
"v0.0.20");
194 QVERIFY(conf[1].files.length() == 1);
195 QVERIFY(conf[1].files[0].szSystem.isEmpty());
196 QVERIFY(conf[1].files[0].szArchitecture.isEmpty());
197 QVERIFY(conf[1].files[0].urls.size() == 1);
198 QVERIFY(conf[1].files[0].urls[0] == QUrl::fromLocalFile(
"data/update_locale.json"));
200 QVERIFY(conf[2].szVersion ==
"v0.0.20");
201 QVERIFY(conf[2].szMinUpdateVersion ==
"v0.0.10");
202 QVERIFY(conf[2].files.length() == 4);
203 QVERIFY(conf[2].files[0].szSystem ==
"windows");
204 QVERIFY(conf[2].files[0].szArchitecture.isEmpty());
205 QVERIFY(conf[2].files[0].urls.size() == 1);
206 QVERIFY(conf[2].files[0].urls[0] == QUrl::fromLocalFile(
"data/update_windows.json"));
207 QVERIFY(conf[2].files[1].szSystem ==
"ubuntu");
208 QVERIFY(conf[2].files[1].szArchitecture ==
"x86_64");
209 QVERIFY(conf[2].files[1].urls.size() == 1);
210 QVERIFY(conf[2].files[1].urls[0] == QUrl::fromLocalFile(
"data/update_ubuntu.json"));
211 QVERIFY(conf[2].files[2].szSystem ==
"macos");
212 QVERIFY(conf[2].files[2].szArchitecture ==
"x86_64");
213 QVERIFY(conf[2].files[2].urls.size() == 1);
214 QVERIFY(conf[2].files[2].urls[0] == QUrl::fromLocalFile(
"data/update_macos.json"));
215 QVERIFY(conf[2].files[3].szSystem ==
"osx");
216 QVERIFY(conf[2].files[3].szArchitecture ==
"x86_64");
217 QVERIFY(conf[2].files[3].urls.size() == 1);
218 QVERIFY(conf[2].files[3].urls[0] == QUrl::fromLocalFile(
"data/update_macos.json"));
220 QVERIFY(conf[3].szVersion ==
"v0.0.10");
221 QVERIFY(conf[3].szMinUpdateVersion ==
"v0.0.5");
222 QVERIFY(conf[3].files.length() == 1);
224 QVERIFY(conf[4].szVersion ==
"v0.0.5");
225 QVERIFY(conf[4].szMinUpdateVersion.isEmpty());
226 QVERIFY(conf[4].files.length() == 2);
227 QVERIFY(conf[4].files[0].szSystem ==
"windows");
228 QVERIFY(conf[4].files[0].szArchitecture ==
"x86");
229 QVERIFY(conf[4].files[0].urls.size() == 2);
230 QVERIFY(conf[4].files[1].szSystem ==
"ubuntu");
231 QVERIFY(conf[4].files[1].szArchitecture ==
"x86_64");
232 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)