2019-01-26 15:34:39 +03:00
|
|
|
/*
|
|
|
|
* Copyright (C) 2018-2019 QuasarApp.
|
|
|
|
* Distributed under the lgplv3 software license, see the accompanying
|
|
|
|
* Everyone is permitted to copy and distribute verbatim copies
|
|
|
|
* of this license document, but changing it is not allowed.
|
|
|
|
*/
|
|
|
|
|
|
|
|
#include <QtTest>
|
|
|
|
#include <quasarapp.h>
|
2019-09-03 18:15:05 +03:00
|
|
|
#include <deploycore.h>
|
2019-09-08 13:37:33 +03:00
|
|
|
#include <extracter.h>
|
2019-03-19 21:50:05 +03:00
|
|
|
#include <dependenciesscanner.h>
|
2019-03-26 22:12:20 +03:00
|
|
|
#include <qml.h>
|
2019-09-08 19:30:01 +03:00
|
|
|
#include <deploy.h>
|
|
|
|
#include <cqt.h>
|
2019-09-11 13:09:09 +03:00
|
|
|
#include <QCryptographicHash>
|
2019-01-26 15:34:39 +03:00
|
|
|
|
2019-03-19 21:50:05 +03:00
|
|
|
#include <QMap>
|
2019-01-26 22:27:36 +03:00
|
|
|
#include <QByteArray>
|
2019-01-26 15:34:39 +03:00
|
|
|
#include <QDir>
|
2019-01-26 22:27:36 +03:00
|
|
|
#include <thread>
|
2019-03-19 21:50:05 +03:00
|
|
|
#include "libcreator.h"
|
2019-09-14 15:51:23 +03:00
|
|
|
#include "modules.h"
|
2019-03-26 22:12:20 +03:00
|
|
|
#include "qmlcreator.h"
|
2019-09-10 18:22:49 +03:00
|
|
|
#include "testutils.h"
|
2019-01-26 15:34:39 +03:00
|
|
|
// add necessary includes here
|
|
|
|
|
2019-09-11 18:09:37 +03:00
|
|
|
const QString TestBinDir = TEST_BIN_DIR;
|
2019-09-13 14:43:32 +03:00
|
|
|
const QString TestQtDir = QT_BASE_DIR;
|
2019-09-11 18:09:37 +03:00
|
|
|
|
2019-01-26 15:34:39 +03:00
|
|
|
class deploytest : public QObject
|
|
|
|
{
|
|
|
|
Q_OBJECT
|
|
|
|
|
2019-03-29 22:12:08 +03:00
|
|
|
private:
|
2019-09-13 17:44:20 +03:00
|
|
|
QSet<QString> qtFilesTree;
|
|
|
|
|
|
|
|
|
2019-04-01 12:45:12 +03:00
|
|
|
bool runProcess(const QString& DistroPath,
|
|
|
|
const QString& filename,
|
|
|
|
const QString &qt = "");
|
2019-03-29 23:02:39 +03:00
|
|
|
QStringList getFilesFromDir(const QString& dir);
|
2019-05-14 11:31:13 +03:00
|
|
|
|
|
|
|
|
2019-09-14 15:51:23 +03:00
|
|
|
void runTestParams(const QStringList &list, QSet<QString> *tree = nullptr, bool noWarnings = false);
|
2019-09-10 18:22:49 +03:00
|
|
|
|
2019-01-26 15:34:39 +03:00
|
|
|
public:
|
|
|
|
deploytest();
|
2019-01-27 12:30:45 +03:00
|
|
|
/**
|
|
|
|
* @brief generateLib
|
|
|
|
* @param paath
|
|
|
|
* @return size of lib
|
|
|
|
*/
|
|
|
|
int generateLib(const QString& paath);
|
|
|
|
void deleteLib(const QString& paath);
|
|
|
|
|
2019-01-26 15:34:39 +03:00
|
|
|
~deploytest();
|
|
|
|
|
|
|
|
private slots:
|
|
|
|
void initTestCase();
|
|
|
|
void cleanupTestCase();
|
2019-09-10 18:22:49 +03:00
|
|
|
|
|
|
|
// old tests (not valid)
|
2019-01-26 22:27:36 +03:00
|
|
|
void testDeployTarget();
|
|
|
|
void testStrip();
|
2019-03-19 21:50:05 +03:00
|
|
|
void testExtractLib();
|
2019-05-23 18:31:51 +03:00
|
|
|
|
2019-04-01 12:50:59 +03:00
|
|
|
void testQmlExtrct();
|
2019-08-27 11:07:12 +03:00
|
|
|
void testSetTargetDir();
|
2019-01-26 15:34:39 +03:00
|
|
|
|
2019-09-14 15:51:23 +03:00
|
|
|
// void mainTests();
|
2019-09-10 18:22:49 +03:00
|
|
|
|
|
|
|
// end old tests
|
|
|
|
|
2019-09-12 17:00:50 +03:00
|
|
|
// tested flags : help, version
|
2019-09-10 18:22:49 +03:00
|
|
|
void testHelp();
|
2019-09-12 17:00:50 +03:00
|
|
|
// tested flags clear noOvervrite
|
2019-09-11 13:09:09 +03:00
|
|
|
void testOverwrite();
|
2019-09-12 17:00:50 +03:00
|
|
|
|
|
|
|
// tested flags binDir
|
2019-09-12 10:23:49 +03:00
|
|
|
void testBinDir();
|
2019-09-11 13:09:09 +03:00
|
|
|
|
2019-09-14 15:51:23 +03:00
|
|
|
// tested flags confFile
|
2019-09-12 17:00:50 +03:00
|
|
|
void testConfFile();
|
|
|
|
|
2019-09-14 15:51:23 +03:00
|
|
|
// tested flags qmlDir qmake
|
2019-09-13 14:43:32 +03:00
|
|
|
void testQt();
|
|
|
|
|
2019-09-14 15:51:23 +03:00
|
|
|
// tested flags ignore ignoreEnv
|
|
|
|
void testIgnore();
|
|
|
|
|
|
|
|
// tested flags libDir recursiveDepth
|
|
|
|
void testLibDir();
|
|
|
|
|
|
|
|
// tested flag extraPlugin
|
|
|
|
void testExtraPlugins();
|
|
|
|
|
|
|
|
// tested flag targetDir
|
|
|
|
void testTargetDir();
|
|
|
|
|
|
|
|
// tested flag noLibc deploySystem
|
|
|
|
void testSystemLib();
|
|
|
|
|
2019-03-28 10:32:46 +03:00
|
|
|
void testMSVC();
|
2019-09-10 18:22:49 +03:00
|
|
|
|
2019-01-26 15:34:39 +03:00
|
|
|
};
|
|
|
|
|
2019-04-01 12:45:12 +03:00
|
|
|
bool deploytest::runProcess(const QString &DistroPath,
|
|
|
|
const QString &filename,
|
|
|
|
const QString& qt) {
|
2019-03-29 22:12:08 +03:00
|
|
|
|
|
|
|
QProcess p;
|
2019-04-01 12:45:12 +03:00
|
|
|
|
|
|
|
QProcessEnvironment env = QProcessEnvironment::systemEnvironment();
|
|
|
|
|
|
|
|
if (qt.size()) {
|
|
|
|
auto val = env.value("LD_LIBRARY_PATH","").remove(qt);
|
|
|
|
env.insert("LD_LIBRARY_PATH", val);
|
|
|
|
|
|
|
|
val = env.value("PATH","").remove(qt);
|
|
|
|
env.insert("PATH", val);
|
|
|
|
|
|
|
|
env.insert("QTDIR", "");
|
|
|
|
} else {
|
|
|
|
env.clear();
|
|
|
|
env.insert("QTDIR", "");
|
|
|
|
|
|
|
|
}
|
|
|
|
p.setProcessEnvironment(env);
|
2019-03-29 22:12:08 +03:00
|
|
|
|
|
|
|
#ifdef Q_OS_UNIX
|
|
|
|
p.setProgram(DistroPath + "/" + filename + ".sh");
|
|
|
|
#else
|
|
|
|
p.setProgram(DistroPath + "/" + filename + ".exe");
|
|
|
|
#endif
|
|
|
|
|
|
|
|
p.start();
|
|
|
|
|
2019-04-06 18:12:50 +03:00
|
|
|
if (!p.waitForFinished(10000)) {
|
2019-03-29 22:12:08 +03:00
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
QString str = p.readAll();
|
2019-04-01 12:45:12 +03:00
|
|
|
if (p.exitCode()) {
|
|
|
|
qCritical() << p.errorString();
|
|
|
|
}
|
|
|
|
|
|
|
|
if (p.exitCode()) {
|
|
|
|
qWarning() << "exitCode == " << p.exitCode();
|
|
|
|
}
|
2019-03-29 22:12:08 +03:00
|
|
|
|
|
|
|
if (str.contains("failed to load component", Qt::CaseInsensitive)
|
|
|
|
|| str.contains("is not installed", Qt::CaseInsensitive) ||
|
|
|
|
str.contains("error", Qt::CaseInsensitive)) {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
return p.exitCode() == 0;
|
|
|
|
}
|
|
|
|
|
2019-03-29 23:02:39 +03:00
|
|
|
QStringList deploytest::getFilesFromDir(const QString &path) {
|
2019-09-14 15:51:23 +03:00
|
|
|
QDir dir(path);
|
2019-03-29 23:02:39 +03:00
|
|
|
|
2019-09-14 15:51:23 +03:00
|
|
|
QStringList res;
|
2019-03-29 23:02:39 +03:00
|
|
|
|
2019-09-14 15:51:23 +03:00
|
|
|
auto list = dir.entryInfoList(QDir::Dirs| QDir::Files| QDir::NoDotAndDotDot);
|
2019-03-29 23:02:39 +03:00
|
|
|
|
2019-09-14 15:51:23 +03:00
|
|
|
for (auto &&subDir: list) {
|
2019-03-29 23:02:39 +03:00
|
|
|
|
2019-09-14 15:51:23 +03:00
|
|
|
if (subDir.isFile()) {
|
|
|
|
res.push_back(subDir.fileName());
|
|
|
|
} else {
|
|
|
|
res.append(getFilesFromDir(subDir.absoluteFilePath()));
|
2019-03-29 23:02:39 +03:00
|
|
|
}
|
2019-09-14 15:51:23 +03:00
|
|
|
}
|
2019-03-29 23:02:39 +03:00
|
|
|
|
2019-09-14 15:51:23 +03:00
|
|
|
return res;
|
2019-03-29 23:02:39 +03:00
|
|
|
}
|
|
|
|
|
2019-09-13 17:44:20 +03:00
|
|
|
deploytest::deploytest() {
|
|
|
|
TestUtils utils;
|
|
|
|
|
|
|
|
auto tempTree = utils.getTree(TestQtDir);
|
|
|
|
|
|
|
|
for (const QString &i: tempTree) {
|
|
|
|
qtFilesTree.insert(QFileInfo(i).fileName());
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
2019-01-26 15:34:39 +03:00
|
|
|
|
2019-01-27 12:30:45 +03:00
|
|
|
int deploytest::generateLib(const QString &paath)
|
|
|
|
{
|
|
|
|
QDir dir;
|
2019-01-27 15:37:19 +03:00
|
|
|
dir.mkpath(QFileInfo(paath).absolutePath());
|
2019-01-27 12:30:45 +03:00
|
|
|
QFile testLib (paath);
|
|
|
|
|
|
|
|
int size = 0;
|
|
|
|
|
|
|
|
if (testLib.open(QIODevice::ReadWrite| QIODevice::Truncate)) {
|
|
|
|
QFile resData(":/debugLib");
|
|
|
|
if (resData.open(QIODevice::ReadOnly)) {
|
|
|
|
QByteArray tempData = resData.readAll();
|
|
|
|
size = tempData.size();
|
|
|
|
testLib.write(tempData.data(), tempData.size());
|
|
|
|
resData.close();
|
|
|
|
}
|
|
|
|
|
|
|
|
testLib.close();
|
|
|
|
}
|
|
|
|
|
|
|
|
return size;
|
|
|
|
}
|
|
|
|
|
|
|
|
void deploytest::deleteLib(const QString &paath)
|
|
|
|
{
|
|
|
|
QFileInfo info(paath);
|
|
|
|
if (info.isDir()) {
|
|
|
|
QFile::remove(info.absoluteFilePath());
|
|
|
|
} else {
|
|
|
|
QDir qt(info.absoluteFilePath());
|
|
|
|
qt.removeRecursively();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2019-01-26 15:34:39 +03:00
|
|
|
deploytest::~deploytest(){}
|
|
|
|
|
|
|
|
void deploytest::initTestCase() {
|
|
|
|
QDir qt;
|
|
|
|
qt.mkpath("./test/Qt/5.12/");
|
|
|
|
qt.mkpath("./test/extraPath/");
|
|
|
|
qt.mkpath("./test/extra/");
|
|
|
|
qt.mkpath("./test/warning/");
|
2019-01-26 17:39:19 +03:00
|
|
|
qt.mkpath("./test/bins/");
|
2019-01-26 15:34:39 +03:00
|
|
|
|
|
|
|
QFile f( "./test/Qt/5.12/generalLib.so");
|
|
|
|
if (f.open(QIODevice::WriteOnly| QIODevice::Truncate)) {
|
|
|
|
f.write("lib", 3);
|
|
|
|
f.close();
|
|
|
|
}
|
|
|
|
|
|
|
|
f.setFileName("./test/extraPath/ExtraLib.so");
|
|
|
|
if (f.open(QIODevice::WriteOnly| QIODevice::Truncate)) {
|
|
|
|
f.write("lib", 3);
|
|
|
|
f.close();
|
|
|
|
}
|
|
|
|
|
|
|
|
f.setFileName("./test/extra/ExtraLib.so");
|
|
|
|
if (f.open(QIODevice::WriteOnly| QIODevice::Truncate)) {
|
|
|
|
f.write("lib", 3);
|
|
|
|
f.close();
|
|
|
|
}
|
|
|
|
|
|
|
|
f.setFileName("./test/warning/WarningLib.so");
|
|
|
|
if (f.open(QIODevice::WriteOnly| QIODevice::Truncate)) {
|
|
|
|
f.write("lib", 3);
|
|
|
|
f.close();
|
|
|
|
}
|
2019-01-26 17:39:19 +03:00
|
|
|
|
|
|
|
f.setFileName("./test/bins/execTarget.exe");
|
|
|
|
if (f.open(QIODevice::WriteOnly| QIODevice::Truncate)) {
|
|
|
|
f.write("exec", 3);
|
|
|
|
f.close();
|
|
|
|
}
|
|
|
|
|
|
|
|
f.setFileName("./test/bins/execTarget");
|
|
|
|
if (f.open(QIODevice::WriteOnly| QIODevice::Truncate)) {
|
|
|
|
f.write("exec", 3);
|
|
|
|
f.close();
|
|
|
|
}
|
2019-01-26 15:34:39 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
void deploytest::cleanupTestCase() {
|
|
|
|
QDir qt("./test");
|
|
|
|
qt.removeRecursively();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
2019-01-26 22:27:36 +03:00
|
|
|
void deploytest::testDeployTarget() {
|
2019-01-26 15:34:39 +03:00
|
|
|
|
2019-09-08 19:30:01 +03:00
|
|
|
FileManager file;
|
|
|
|
CQT *deploy = new CQT(&file);
|
|
|
|
|
2019-01-26 17:39:19 +03:00
|
|
|
QStringList targets;
|
|
|
|
targets << "./test/bins/execTarget.exe";
|
|
|
|
QVERIFY(deploy->setTargets(targets));
|
|
|
|
delete deploy;
|
|
|
|
targets.clear();
|
|
|
|
|
2019-09-08 19:30:01 +03:00
|
|
|
deploy = new CQT(&file);
|
2019-01-26 17:39:19 +03:00
|
|
|
targets << "./test/bins/execTarget";
|
|
|
|
QVERIFY(deploy->setTargets(targets));
|
|
|
|
delete deploy;
|
|
|
|
targets.clear();
|
|
|
|
|
2019-09-08 19:30:01 +03:00
|
|
|
deploy = new CQT(&file);
|
2019-01-26 17:39:19 +03:00
|
|
|
targets << "./test/bins/execTarget.exe" << "./test/bins/execTarget";
|
|
|
|
QVERIFY(deploy->setTargets(targets));
|
|
|
|
delete deploy;
|
|
|
|
targets.clear();
|
|
|
|
|
2019-09-08 19:30:01 +03:00
|
|
|
deploy = new CQT(&file);
|
2019-01-26 17:39:19 +03:00
|
|
|
targets << "./test/bns/execTarget.exe";
|
|
|
|
QVERIFY(!deploy->setTargets(targets));
|
|
|
|
delete deploy;
|
|
|
|
targets.clear();
|
|
|
|
|
2019-09-08 19:30:01 +03:00
|
|
|
deploy = new CQT(&file);
|
2019-01-26 17:39:19 +03:00
|
|
|
targets << "./test/bins/";
|
|
|
|
QVERIFY(deploy->setTargets(targets));
|
|
|
|
delete deploy;
|
|
|
|
targets.clear();
|
|
|
|
|
2019-09-08 19:30:01 +03:00
|
|
|
deploy = new CQT(&file);
|
2019-01-26 17:39:19 +03:00
|
|
|
targets << "./test/bins/" << "./test/warning/";
|
|
|
|
QVERIFY(deploy->setTargets(targets));
|
|
|
|
|
|
|
|
delete deploy;
|
|
|
|
targets.clear();
|
2019-01-26 22:27:36 +03:00
|
|
|
}
|
2019-01-26 17:39:19 +03:00
|
|
|
|
2019-01-26 22:27:36 +03:00
|
|
|
void deploytest::testStrip() {
|
2019-01-26 17:39:19 +03:00
|
|
|
|
2019-09-08 19:30:01 +03:00
|
|
|
#ifdef Q_OS_UNIX
|
2019-01-27 12:30:45 +03:00
|
|
|
//for one lib
|
|
|
|
qint64 sizeBefor = generateLib("./test/binTargetDir/debugLib.so");
|
2019-01-26 22:27:36 +03:00
|
|
|
qint64 sizeAfter = 0;
|
|
|
|
|
2019-09-04 12:01:33 +03:00
|
|
|
FileManager *deploy = new FileManager();
|
2019-01-27 12:30:45 +03:00
|
|
|
QVERIFY(deploy->strip("./test/binTargetDir/debugLib.so"));
|
2019-01-26 22:27:36 +03:00
|
|
|
|
2019-01-27 12:30:45 +03:00
|
|
|
QFile testLib ("./test/binTargetDir/debugLib.so");
|
2019-01-26 22:27:36 +03:00
|
|
|
if (testLib.open(QIODevice::ReadOnly)) {
|
|
|
|
sizeAfter = testLib.size();
|
|
|
|
testLib.close();
|
|
|
|
}
|
2019-01-26 15:34:39 +03:00
|
|
|
|
2019-01-27 12:30:45 +03:00
|
|
|
deleteLib("./test/binTargetDir");
|
|
|
|
delete deploy;
|
2019-01-26 15:34:39 +03:00
|
|
|
|
2019-01-26 22:27:36 +03:00
|
|
|
QVERIFY(sizeBefor > sizeAfter);
|
2019-01-27 12:30:45 +03:00
|
|
|
|
|
|
|
|
|
|
|
//for folder
|
|
|
|
QStringList libList = {
|
|
|
|
("./test/binTargetDir/debugLib1.so"),
|
|
|
|
("./test/binTargetDir/debugLib2.so.1.2"),
|
|
|
|
("./test/binTargetDir/debugLib3.so.1"),
|
|
|
|
("./test/binTargetDir/debugLib4.so.1.0.0"),
|
|
|
|
("./test/binTargetDir/debugLib.dll"),
|
|
|
|
("./test/binTargetDir/debugLib1.dll")
|
|
|
|
};
|
|
|
|
QList<qint64> sizeBeforList = {};
|
|
|
|
|
|
|
|
for (auto i: libList) {
|
|
|
|
sizeBeforList.push_back(generateLib(i));
|
|
|
|
}
|
|
|
|
|
|
|
|
QList<qint64> sizeAfterList;
|
|
|
|
|
2019-09-04 12:01:33 +03:00
|
|
|
deploy = new FileManager();
|
2019-01-27 12:30:45 +03:00
|
|
|
QVERIFY(deploy->strip("./test/binTargetDir"));
|
|
|
|
|
|
|
|
for(auto i: libList) {
|
|
|
|
QFile testLib (i);
|
|
|
|
if (testLib.open(QIODevice::ReadOnly)) {
|
|
|
|
sizeAfterList.push_back(testLib.size());
|
|
|
|
testLib.close();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
deleteLib("./test/binTargetDir");
|
|
|
|
|
|
|
|
QVERIFY(sizeBeforList.size() == sizeAfterList.size());
|
|
|
|
|
|
|
|
for (int i = 0; i < sizeAfterList.size(); ++i) {
|
|
|
|
QVERIFY2(sizeBeforList[i] > sizeAfterList[i],
|
|
|
|
QString("index %0, lib: %1 size befor:%2, sizeAfter:%3").
|
|
|
|
arg(i).arg(libList[i]).arg(sizeBeforList[i]).arg(sizeAfterList[i]).
|
|
|
|
toLatin1());
|
|
|
|
}
|
2019-04-01 22:03:37 +03:00
|
|
|
|
2019-01-27 19:46:11 +03:00
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
2019-03-19 21:50:05 +03:00
|
|
|
void deploytest::testExtractLib() {
|
|
|
|
LibCreator creator("./");
|
|
|
|
auto libs = creator.getLibs();
|
|
|
|
auto deb = creator.getLibsDep();
|
|
|
|
auto platforms = creator.getLibplatform();
|
|
|
|
|
|
|
|
DependenciesScanner scaner;
|
|
|
|
|
|
|
|
LibInfo info;
|
|
|
|
|
|
|
|
for (auto &&lib : libs) {
|
|
|
|
QVERIFY(scaner.fillLibInfo(info, lib));
|
2019-04-05 14:23:42 +03:00
|
|
|
QVERIFY(info.getName() == QFileInfo(lib).fileName());
|
|
|
|
QVERIFY(info.getPath() == QFileInfo(lib).absolutePath());
|
2019-03-19 21:50:05 +03:00
|
|
|
QVERIFY(info.fullPath() == QFileInfo(lib).absoluteFilePath());
|
2019-04-05 14:23:42 +03:00
|
|
|
QVERIFY(info.getPlatform() == platforms.value(lib));
|
2019-03-23 20:40:33 +03:00
|
|
|
|
|
|
|
for (auto &dep : deb.value(lib)) {
|
2019-04-05 16:52:53 +03:00
|
|
|
bool test = info.getDependncies().contains(dep.toUpper());
|
|
|
|
QVERIFY(test);
|
2019-03-23 20:40:33 +03:00
|
|
|
}
|
2019-03-19 21:50:05 +03:00
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
2019-03-28 10:32:46 +03:00
|
|
|
void deploytest::testMSVC() {
|
|
|
|
QString testPath = "./Qt/5.11.2/msvc2017_64/bin/";
|
|
|
|
QString testqmakepath = testPath +"qmake";
|
|
|
|
|
|
|
|
QDir d;
|
|
|
|
QDir oldDir("./Qt");
|
|
|
|
oldDir.removeRecursively();
|
|
|
|
QVERIFY(d.mkpath(testPath));
|
|
|
|
|
|
|
|
QFile file(testqmakepath);
|
|
|
|
|
|
|
|
QVERIFY(file.open(QIODevice::ReadWrite | QIODevice::Truncate));
|
|
|
|
|
|
|
|
QVERIFY(file.write("test"));
|
|
|
|
|
|
|
|
file.close();
|
|
|
|
|
|
|
|
|
2019-09-03 18:15:05 +03:00
|
|
|
auto msvc = DeployCore::getMSVC(testqmakepath);
|
2019-03-28 10:32:46 +03:00
|
|
|
|
|
|
|
QVERIFY(msvc & MSVCVersion::MSVC_17);
|
|
|
|
QVERIFY(msvc & MSVCVersion::MSVC_x64);
|
|
|
|
|
|
|
|
QVERIFY(file.remove());
|
2019-04-01 12:54:07 +03:00
|
|
|
QDir dir("./Qt");
|
|
|
|
dir.removeRecursively();
|
|
|
|
|
2019-03-28 10:32:46 +03:00
|
|
|
|
|
|
|
}
|
|
|
|
|
2019-04-01 12:54:07 +03:00
|
|
|
void deploytest::testQmlExtrct() {
|
2019-03-26 22:12:20 +03:00
|
|
|
QmlCreator creator("./");
|
|
|
|
auto imports = creator.getQmlImports();
|
|
|
|
|
|
|
|
auto qmlFiles = creator.getCopyedQml();
|
|
|
|
|
|
|
|
|
|
|
|
QML scaner("./");
|
|
|
|
|
|
|
|
|
|
|
|
for (auto &&file : qmlFiles) {
|
|
|
|
|
|
|
|
|
|
|
|
auto fileImports = scaner.extractImportsFromFile(file);
|
|
|
|
|
2019-04-02 12:46:14 +03:00
|
|
|
for (auto &fil : imports.value(file)) {
|
|
|
|
QVERIFY(fileImports.contains(fil, Qt::CaseInsensitive));
|
2019-03-26 22:12:20 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2019-08-27 11:07:12 +03:00
|
|
|
void deploytest::testSetTargetDir() {
|
|
|
|
|
2019-09-09 09:56:57 +03:00
|
|
|
FileManager file;
|
|
|
|
CQT dep(&file);
|
2019-08-27 11:07:12 +03:00
|
|
|
|
|
|
|
dep.setTargetDir();
|
|
|
|
|
2019-09-09 09:56:57 +03:00
|
|
|
QVERIFY(dep.config()->targetDir == QFileInfo("./Distro").absoluteFilePath());
|
2019-08-27 11:07:12 +03:00
|
|
|
dep.setTargetDir("./ff");
|
2019-09-09 09:56:57 +03:00
|
|
|
QVERIFY(dep.config()->targetDir == QFileInfo("./ff").absoluteFilePath());
|
2019-08-27 11:07:12 +03:00
|
|
|
|
|
|
|
int argc = 3;
|
|
|
|
const char * argv[] = {"", "-targetDir", "./Distro2"};
|
|
|
|
|
|
|
|
QuasarAppUtils::Params::parseParams(argc, argv);
|
|
|
|
|
|
|
|
dep.setTargetDir();
|
2019-09-09 09:56:57 +03:00
|
|
|
QVERIFY(dep.config()->targetDir == QFileInfo("./Distro2").absoluteFilePath());
|
2019-08-27 11:07:12 +03:00
|
|
|
dep.setTargetDir("./ff");
|
2019-09-09 09:56:57 +03:00
|
|
|
QVERIFY(dep.config()->targetDir == QFileInfo("./Distro2").absoluteFilePath());
|
2019-08-27 11:07:12 +03:00
|
|
|
|
|
|
|
}
|
|
|
|
|
2019-09-14 15:51:23 +03:00
|
|
|
void deploytest::runTestParams(const QStringList &list, QSet<QString>* tree, bool noWarnings) {
|
2019-09-10 18:22:49 +03:00
|
|
|
|
|
|
|
QuasarAppUtils::Params::parseParams(list);
|
|
|
|
|
|
|
|
Deploy deploy;
|
|
|
|
QVERIFY(deploy.run() == 0);
|
|
|
|
|
|
|
|
if (tree) {
|
|
|
|
TestUtils utils;
|
|
|
|
|
|
|
|
QVERIFY(DeployCore::_config);
|
|
|
|
QVERIFY(!DeployCore::_config->targetDir.isEmpty());
|
|
|
|
|
|
|
|
auto resultTree = utils.getTree(DeployCore::_config->targetDir);
|
2019-09-13 17:44:20 +03:00
|
|
|
|
2019-09-10 18:22:49 +03:00
|
|
|
auto comapre = utils.compareTree(resultTree, *tree);
|
|
|
|
|
2019-09-12 21:42:10 +03:00
|
|
|
if (comapre.size() != 0) {
|
2019-09-13 14:43:32 +03:00
|
|
|
|
2019-09-13 17:44:20 +03:00
|
|
|
bool bug = false;
|
|
|
|
|
|
|
|
for (auto i = comapre.begin(); i != comapre.end(); ++i) {
|
|
|
|
|
|
|
|
if (i.value() == 1) {
|
|
|
|
qCritical() << "added unnecessary file : " + i.key();
|
|
|
|
bug = true;
|
|
|
|
} else if (qtFilesTree.contains(QFileInfo(i.key()).fileName())) {
|
|
|
|
qCritical() << "Missing file : " + i.key();
|
|
|
|
bug = true;
|
2019-09-14 15:51:23 +03:00
|
|
|
} else if (noWarnings) {
|
|
|
|
qCritical() << "File : " + i.key() + " not exits in qt Dir";
|
|
|
|
bug = true;
|
2019-09-13 17:44:20 +03:00
|
|
|
} else {
|
|
|
|
qWarning() << "File : " + i.key() + " not exits in qt Dir";
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if (!bug) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
2019-09-13 14:43:32 +03:00
|
|
|
QJsonObject obj;
|
|
|
|
for (auto i : resultTree) {
|
|
|
|
obj[i];
|
|
|
|
}
|
|
|
|
|
|
|
|
QJsonDocument doc(obj);
|
|
|
|
|
|
|
|
QFile lasttree("./LastTree.json");
|
|
|
|
lasttree.open(QIODevice::WriteOnly| QIODevice::Truncate);
|
|
|
|
|
|
|
|
lasttree.write(doc.toJson());
|
|
|
|
lasttree.close();
|
|
|
|
|
2019-09-12 21:42:10 +03:00
|
|
|
QVERIFY2(false, "runTestParams fail");
|
|
|
|
|
2019-09-13 14:43:32 +03:00
|
|
|
|
2019-09-12 21:42:10 +03:00
|
|
|
}
|
2019-09-10 18:22:49 +03:00
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
void deploytest::testHelp() {
|
|
|
|
runTestParams({"h"});
|
|
|
|
runTestParams({"v"});
|
2019-09-12 09:38:30 +03:00
|
|
|
auto help = DeployCore::help();
|
2019-09-10 18:22:49 +03:00
|
|
|
|
|
|
|
for (auto &key: DeployCore::helpKeys()) {
|
2019-09-12 09:38:30 +03:00
|
|
|
QVERIFY(help.contains(key));
|
2019-09-10 18:22:49 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
2019-09-11 13:09:09 +03:00
|
|
|
void deploytest::testOverwrite() {
|
|
|
|
TestUtils utils;
|
|
|
|
|
2019-09-12 17:00:50 +03:00
|
|
|
#ifdef Q_OS_UNIX
|
2019-09-11 13:09:09 +03:00
|
|
|
auto comapareTree = utils.createTree(
|
2019-09-14 15:51:23 +03:00
|
|
|
{"./Distro/bin/TestOnlyC",
|
|
|
|
"./Distro/TestOnlyC.sh"});
|
2019-09-12 17:00:50 +03:00
|
|
|
#else
|
|
|
|
auto comapareTree = utils.createTree(
|
2019-09-14 15:51:23 +03:00
|
|
|
{"./Distro/TestOnlyC.exe",
|
|
|
|
"./Distro/qt.conf"});
|
2019-09-12 17:00:50 +03:00
|
|
|
#endif
|
2019-09-11 13:09:09 +03:00
|
|
|
|
2019-09-12 10:23:49 +03:00
|
|
|
runTestParams({"-bin", TestBinDir + "TestOnlyC", "force-clear", "noOverwrite"}, &comapareTree);
|
2019-09-11 13:09:09 +03:00
|
|
|
|
|
|
|
|
|
|
|
QFile f("./Distro/bin/TestOnlyC");
|
|
|
|
|
|
|
|
QVERIFY(f.open(QIODevice::ReadOnly));
|
|
|
|
auto hashBefor = QCryptographicHash::hash(f.readAll(), QCryptographicHash::Md5);
|
|
|
|
f.close();
|
|
|
|
|
|
|
|
QVERIFY(f.open(QIODevice::WriteOnly | QIODevice::Append));
|
|
|
|
f.write(QByteArray(10, '1'));
|
|
|
|
f.close();
|
|
|
|
|
|
|
|
QVERIFY(f.open(QIODevice::ReadOnly));
|
|
|
|
auto hashAfter = QCryptographicHash::hash(f.readAll(), QCryptographicHash::Md5);
|
|
|
|
f.close();
|
|
|
|
|
|
|
|
QVERIFY(hashAfter != hashBefor);
|
|
|
|
|
2019-09-12 09:38:30 +03:00
|
|
|
runTestParams({"-bin", TestBinDir + "TestOnlyC", "noOverwrite"}, &comapareTree);
|
2019-09-11 13:09:09 +03:00
|
|
|
|
|
|
|
QVERIFY(f.open(QIODevice::ReadOnly));
|
|
|
|
hashAfter = QCryptographicHash::hash(f.readAll(), QCryptographicHash::Md5);
|
|
|
|
f.close();
|
|
|
|
|
|
|
|
QVERIFY(hashAfter != hashBefor);
|
|
|
|
|
|
|
|
|
2019-09-12 09:38:30 +03:00
|
|
|
runTestParams({"-bin", TestBinDir + "TestOnlyC"}, &comapareTree);
|
2019-09-11 13:09:09 +03:00
|
|
|
|
|
|
|
QVERIFY(f.open(QIODevice::ReadOnly));
|
|
|
|
hashAfter = QCryptographicHash::hash(f.readAll(), QCryptographicHash::Md5);
|
|
|
|
f.close();
|
|
|
|
|
|
|
|
QVERIFY(hashAfter == hashBefor);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
2019-09-12 10:23:49 +03:00
|
|
|
void deploytest::testBinDir() {
|
|
|
|
TestUtils utils;
|
|
|
|
|
2019-09-12 17:00:50 +03:00
|
|
|
|
|
|
|
#ifdef Q_OS_UNIX
|
2019-09-12 10:23:49 +03:00
|
|
|
auto comapareTree = utils.createTree(
|
2019-09-14 15:51:23 +03:00
|
|
|
{"./Distro/bin/TestOnlyC",
|
|
|
|
"./Distro/bin/QtWidgetsProject",
|
|
|
|
"./Distro/bin/TestQMLWidgets",
|
|
|
|
"./Distro/TestOnlyC.sh",
|
|
|
|
"./Distro/QtWidgetsProject.sh",
|
|
|
|
"./Distro/TestQMLWidgets.sh"});
|
2019-09-12 17:00:50 +03:00
|
|
|
#else
|
|
|
|
auto comapareTree = utils.createTree(
|
2019-09-14 15:51:23 +03:00
|
|
|
{"./Distro/TestOnlyC.exe",
|
|
|
|
"./Distro/QtWidgetsProject.exe",
|
|
|
|
"./Distro/TestQMLWidgets.exe",
|
|
|
|
"./Distro/qt.conf"});
|
2019-09-12 17:00:50 +03:00
|
|
|
#endif
|
|
|
|
|
|
|
|
|
2019-09-12 10:23:49 +03:00
|
|
|
|
|
|
|
runTestParams({"-binDir", TestBinDir, "clear"}, &comapareTree);
|
2019-09-12 17:00:50 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
void deploytest::testConfFile() {
|
|
|
|
TestUtils utils;
|
|
|
|
|
2019-09-12 21:42:10 +03:00
|
|
|
QFile::remove(TestBinDir + "/TestConf.json");
|
2019-09-12 17:00:50 +03:00
|
|
|
|
|
|
|
#ifdef Q_OS_UNIX
|
|
|
|
auto comapareTree = utils.createTree(
|
2019-09-14 15:51:23 +03:00
|
|
|
{"./Distro/bin/TestOnlyC",
|
|
|
|
"./Distro/bin/QtWidgetsProject",
|
|
|
|
"./Distro/bin/TestQMLWidgets",
|
|
|
|
"./Distro/TestOnlyC.sh",
|
|
|
|
"./Distro/QtWidgetsProject.sh",
|
|
|
|
"./Distro/TestQMLWidgets.sh"});
|
2019-09-12 17:00:50 +03:00
|
|
|
#else
|
|
|
|
auto comapareTree = utils.createTree(
|
2019-09-14 15:51:23 +03:00
|
|
|
{"./Distro/TestOnlyC.exe",
|
|
|
|
"./Distro/QtWidgetsProject.exe",
|
|
|
|
"./Distro/TestQMLWidgets.exe",
|
|
|
|
"./Distro/qt.conf"});
|
2019-09-12 17:00:50 +03:00
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
runTestParams({"-bin", TestBinDir, "clear" ,
|
|
|
|
"-confFile", TestBinDir + "/TestConf.json"}, &comapareTree);
|
|
|
|
|
|
|
|
|
|
|
|
QVERIFY(QFile::exists(TestBinDir + "/TestConf.json"));
|
|
|
|
QFile::remove(TestBinDir + "/TestConf.json");
|
|
|
|
|
|
|
|
#ifdef Q_OS_UNIX
|
2019-09-12 21:42:10 +03:00
|
|
|
runTestParams({"-bin", TestBinDir + "TestOnlyC," + TestBinDir + "QtWidgetsProject," + TestBinDir + "TestQMLWidgets",
|
2019-09-12 17:00:50 +03:00
|
|
|
"clear" ,
|
|
|
|
"-confFile", TestBinDir + "/TestConf.json"}, &comapareTree);
|
|
|
|
#else
|
2019-09-12 21:42:10 +03:00
|
|
|
runTestParams({"-bin", TestBinDir + "TestOnlyC.exe," + TestBinDir + "QtWidgetsProject.exe," + TestBinDir + "TestQMLWidgets.exe",
|
2019-09-12 17:00:50 +03:00
|
|
|
"clear" ,
|
|
|
|
"-confFile", TestBinDir + "/TestConf.json"}, &comapareTree);
|
|
|
|
#endif
|
|
|
|
|
|
|
|
QFile confFile(TestBinDir + "/TestConf.json");
|
|
|
|
QVERIFY(confFile.open(QIODevice::ReadOnly));
|
|
|
|
|
|
|
|
auto data = confFile.readAll();
|
2019-09-12 21:42:10 +03:00
|
|
|
confFile.close();
|
2019-09-12 17:00:50 +03:00
|
|
|
|
|
|
|
QJsonDocument doc;
|
2019-09-12 21:42:10 +03:00
|
|
|
doc = doc.fromJson(data);
|
2019-09-12 17:00:50 +03:00
|
|
|
QVERIFY(!doc.isNull());
|
|
|
|
|
2019-09-12 21:42:10 +03:00
|
|
|
QVERIFY(data.contains("\"bin\": ["));
|
2019-09-12 17:00:50 +03:00
|
|
|
QVERIFY(data.contains("build/TestOnlyC"));
|
|
|
|
QVERIFY(data.contains("build/QtWidgetsProject"));
|
|
|
|
QVERIFY(data.contains("build/TestQMLWidgets"));
|
|
|
|
|
|
|
|
QVERIFY(data.contains("\"clear\": true"));
|
|
|
|
|
2019-09-12 21:42:10 +03:00
|
|
|
#ifdef Q_OS_UNIX
|
|
|
|
runTestParams({"-confFile", TestBinDir + "/TestConf.json"}, &comapareTree);
|
|
|
|
#else
|
|
|
|
runTestParams({"-confFile", TestBinDir + "/TestConf.json"}, &comapareTree);
|
|
|
|
|
|
|
|
#endif
|
2019-09-12 10:23:49 +03:00
|
|
|
|
2019-09-12 21:42:10 +03:00
|
|
|
QVERIFY(QuasarAppUtils::Params::isEndable("clear"));
|
|
|
|
QVERIFY(QuasarAppUtils::Params::isEndable("bin"));
|
2019-09-12 10:23:49 +03:00
|
|
|
|
2019-09-13 14:43:32 +03:00
|
|
|
QFile::remove(TestBinDir + "/TestConf.json");
|
|
|
|
}
|
|
|
|
|
|
|
|
void deploytest::testQt() {
|
|
|
|
TestUtils utils;
|
|
|
|
|
|
|
|
|
|
|
|
#ifdef Q_OS_UNIX
|
|
|
|
QString bin = TestBinDir + "TestQMLWidgets";
|
|
|
|
QString qmake = TestQtDir + "bin/qmake";
|
|
|
|
|
|
|
|
#else
|
|
|
|
QString bin = TestBinDir + "TestQMLWidgets.exe";
|
|
|
|
QString qmake = TestQtDir + "bin/qmake.exe";
|
|
|
|
|
|
|
|
#endif
|
2019-09-14 15:51:23 +03:00
|
|
|
auto comapareTree = Modules::qmlLibs();
|
2019-09-13 14:43:32 +03:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
runTestParams({"-bin", bin, "clear" ,
|
2019-09-14 15:51:23 +03:00
|
|
|
"-qmake", qmake,
|
|
|
|
"-qmlDir", TestBinDir + "/../TestQMLWidgets"}, &comapareTree);
|
2019-09-13 14:43:32 +03:00
|
|
|
|
2019-09-13 18:43:28 +03:00
|
|
|
#ifdef Q_OS_UNIX
|
|
|
|
bin = TestBinDir + "QtWidgetsProject";
|
|
|
|
|
|
|
|
#else
|
|
|
|
auto comapareTree = utils.createTree(
|
2019-09-14 15:51:23 +03:00
|
|
|
{"./Distro/TestQMLWidgets.exe",
|
|
|
|
"./Distro/qt.conf"});
|
2019-09-13 18:43:28 +03:00
|
|
|
QString bin = TestBinDir + "QtWidgetsProject.exe";
|
|
|
|
|
|
|
|
#endif
|
2019-09-14 15:51:23 +03:00
|
|
|
comapareTree = Modules::qtLibs();
|
2019-09-13 18:43:28 +03:00
|
|
|
|
|
|
|
runTestParams({"-bin", bin, "clear" ,
|
2019-09-14 15:51:23 +03:00
|
|
|
"-qmake", qmake}, &comapareTree);
|
2019-09-13 18:43:28 +03:00
|
|
|
|
|
|
|
|
|
|
|
#ifdef Q_OS_UNIX
|
2019-09-14 15:51:23 +03:00
|
|
|
comapareTree = Modules::qtWithoutTr();
|
2019-09-13 18:43:28 +03:00
|
|
|
bin = TestBinDir + "QtWidgetsProject";
|
|
|
|
|
|
|
|
#else
|
|
|
|
auto comapareTree = utils.createTree(
|
2019-09-14 15:51:23 +03:00
|
|
|
{"./Distro/TestQMLWidgets.exe",
|
|
|
|
"./Distro/qt.conf"});
|
2019-09-13 18:43:28 +03:00
|
|
|
QString bin = TestBinDir + "QtWidgetsProject.exe";
|
|
|
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
runTestParams({"-bin", bin, "clear" ,
|
2019-09-14 15:51:23 +03:00
|
|
|
"-qmake", qmake, "noTranslations"}, &comapareTree);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
void deploytest::testIgnore() {
|
|
|
|
TestUtils utils;
|
|
|
|
|
|
|
|
|
|
|
|
#ifdef Q_OS_UNIX
|
|
|
|
QString bin = TestBinDir + "QtWidgetsProject";
|
|
|
|
QString qmake = TestQtDir + "bin/qmake";
|
|
|
|
|
|
|
|
#else
|
|
|
|
QString bin = TestBinDir + "QtWidgetsProject.exe";
|
|
|
|
QString qmake = TestQtDir + "bin/qmake.exe";
|
|
|
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
auto comapareTree = utils.createTree(
|
|
|
|
{
|
|
|
|
"./Distro/QtWidgetsProject.sh",
|
|
|
|
"./Distro/bin/QtWidgetsProject",
|
|
|
|
"./Distro/lib/libicudata.so",
|
|
|
|
"./Distro/lib/libicui18n.so",
|
|
|
|
"./Distro/lib/libicuuc.so"
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
runTestParams({"-bin", bin, "clear" ,
|
|
|
|
"-qmake", qmake,
|
|
|
|
"-ignore", "Qt5"}, &comapareTree);
|
|
|
|
|
|
|
|
comapareTree = utils.createTree(
|
|
|
|
{
|
|
|
|
"./Distro/QtWidgetsProject.sh",
|
|
|
|
"./Distro/bin/QtWidgetsProject",
|
|
|
|
});
|
|
|
|
|
|
|
|
runTestParams({"-bin", bin, "clear" ,
|
|
|
|
"-qmake", qmake,
|
|
|
|
"-ignoreEnv", TestQtDir + "/lib," + TestQtDir + "/bin" }, &comapareTree);
|
|
|
|
|
|
|
|
auto removeTree = utils.createTree({
|
|
|
|
"./Distro/lib/libQt5VirtualKeyboard.so",
|
|
|
|
});
|
|
|
|
|
|
|
|
comapareTree = Modules::qtLibs() - removeTree;
|
|
|
|
|
|
|
|
runTestParams({"-bin", bin, "clear" ,
|
|
|
|
"-qmake", qmake,
|
|
|
|
"-ignore", "VirtualKeyboard"}, &comapareTree);
|
2019-09-13 18:43:28 +03:00
|
|
|
|
2019-09-12 10:23:49 +03:00
|
|
|
}
|
|
|
|
|
2019-09-14 15:51:23 +03:00
|
|
|
void deploytest::testLibDir() {
|
|
|
|
TestUtils utils;
|
2019-04-04 18:11:38 +03:00
|
|
|
|
2019-09-14 15:51:23 +03:00
|
|
|
#ifdef Q_OS_UNIX
|
|
|
|
QString bin = TestBinDir + "TestOnlyC";
|
|
|
|
QString extraPath = "/usr/lib";
|
2019-04-04 18:11:38 +03:00
|
|
|
|
2019-09-14 15:51:23 +03:00
|
|
|
#else
|
|
|
|
QString bin = TestBinDir + "TestOnlyC.exe";
|
|
|
|
QString extraPath = "/usr/lib";
|
2019-04-04 18:11:38 +03:00
|
|
|
|
2019-09-14 15:51:23 +03:00
|
|
|
#endif
|
2019-04-04 18:11:38 +03:00
|
|
|
|
2019-09-14 15:51:23 +03:00
|
|
|
auto comapareTree = utils.createTree(
|
|
|
|
{
|
|
|
|
"./Distro/TestOnlyC.sh",
|
|
|
|
"./Distro/bin/TestOnlyC"
|
|
|
|
});
|
2019-03-28 19:23:22 +03:00
|
|
|
|
|
|
|
|
2019-09-14 15:51:23 +03:00
|
|
|
runTestParams({"-bin", bin, "clear" ,
|
|
|
|
"-libDir", extraPath,
|
|
|
|
}, &comapareTree);
|
2019-03-28 19:23:22 +03:00
|
|
|
|
2019-09-14 15:51:23 +03:00
|
|
|
comapareTree = utils.createTree(
|
|
|
|
{
|
|
|
|
"./Distro/TestOnlyC.sh",
|
|
|
|
"./Distro/bin/TestOnlyC",
|
|
|
|
"./Distro/lib/libstdc++.so",
|
|
|
|
"./Distro/lib/libgcc_s.so"
|
|
|
|
});
|
2019-03-28 19:23:22 +03:00
|
|
|
|
2019-03-29 22:12:08 +03:00
|
|
|
|
2019-09-14 15:51:23 +03:00
|
|
|
runTestParams({"-bin", bin, "clear" ,
|
|
|
|
"-libDir", extraPath,
|
|
|
|
"-recursiveDepth", "5"}, &comapareTree);
|
2019-03-29 22:12:08 +03:00
|
|
|
|
|
|
|
|
2019-09-14 15:51:23 +03:00
|
|
|
}
|
2019-03-29 22:12:08 +03:00
|
|
|
|
2019-09-14 15:51:23 +03:00
|
|
|
void deploytest::testExtraPlugins() {
|
|
|
|
TestUtils utils;
|
2019-03-28 19:23:22 +03:00
|
|
|
|
2019-09-14 15:51:23 +03:00
|
|
|
#ifdef Q_OS_UNIX
|
|
|
|
QString bin = TestBinDir + "QtWidgetsProject";
|
|
|
|
QString extraPath = "/usr/lib";
|
|
|
|
QString qmake = TestQtDir + "bin/qmake";
|
2019-03-29 18:05:55 +03:00
|
|
|
|
|
|
|
|
2019-09-14 15:51:23 +03:00
|
|
|
#else
|
|
|
|
QString bin = TestBinDir + "QtWidgetsProject.exe";
|
|
|
|
QString extraPath = "/usr/lib";
|
|
|
|
QString qmake = TestQtDir + "bin/qmake.exe";
|
2019-03-29 18:05:55 +03:00
|
|
|
|
2019-04-04 18:11:38 +03:00
|
|
|
|
2019-09-14 15:51:23 +03:00
|
|
|
#endif
|
2019-03-29 18:05:55 +03:00
|
|
|
|
2019-09-14 15:51:23 +03:00
|
|
|
auto comapareTree = Modules::qtLibs();
|
2019-03-29 18:05:55 +03:00
|
|
|
|
2019-09-14 15:51:23 +03:00
|
|
|
runTestParams({"-bin", bin, "clear" ,
|
|
|
|
"-qmake", qmake,
|
|
|
|
}, &comapareTree);
|
2019-03-29 18:05:55 +03:00
|
|
|
|
2019-03-29 22:12:08 +03:00
|
|
|
|
2019-09-14 15:51:23 +03:00
|
|
|
auto pluginTree = utils.createTree(
|
|
|
|
{
|
|
|
|
"./Distro/plugins/sqldrivers/libqsqlodbc.so",
|
|
|
|
"./Distro/plugins/sqldrivers/libqsqlpsql.so",
|
|
|
|
"./Distro/plugins/sqldrivers/libqsqlite.so",
|
|
|
|
});
|
2019-03-29 22:12:08 +03:00
|
|
|
|
2019-09-14 15:51:23 +03:00
|
|
|
comapareTree = comapareTree + pluginTree;
|
2019-03-29 18:05:55 +03:00
|
|
|
|
2019-03-29 23:02:39 +03:00
|
|
|
|
2019-09-14 15:51:23 +03:00
|
|
|
runTestParams({"-bin", bin, "clear" ,
|
|
|
|
"-qmake", qmake,
|
|
|
|
"-extraPlugin", "sqldrivers"}, &comapareTree);
|
|
|
|
}
|
2019-05-14 11:31:13 +03:00
|
|
|
|
2019-09-14 15:51:23 +03:00
|
|
|
void deploytest::testTargetDir() {
|
|
|
|
TestUtils utils;
|
2019-05-14 11:31:13 +03:00
|
|
|
|
2019-09-14 15:51:23 +03:00
|
|
|
#ifdef Q_OS_UNIX
|
|
|
|
QString bin = TestBinDir + "TestOnlyC";
|
2019-05-14 11:31:13 +03:00
|
|
|
|
2019-09-14 15:51:23 +03:00
|
|
|
#else
|
|
|
|
QString bin = TestBinDir + "TestOnlyC.exe";
|
2019-03-29 18:05:55 +03:00
|
|
|
|
|
|
|
|
2019-09-14 15:51:23 +03:00
|
|
|
#endif
|
2019-03-29 22:12:08 +03:00
|
|
|
|
2019-09-14 15:51:23 +03:00
|
|
|
auto comapareTree = utils.createTree(
|
|
|
|
{"./DistroZ/bin/TestOnlyC",
|
|
|
|
"./DistroZ/TestOnlyC.sh"});
|
2019-03-29 22:12:08 +03:00
|
|
|
|
2019-09-14 15:51:23 +03:00
|
|
|
runTestParams({"-bin", bin, "clear" ,
|
|
|
|
"-targetDir", "./DistroZ"
|
|
|
|
}, &comapareTree);
|
|
|
|
}
|
2019-03-29 22:12:08 +03:00
|
|
|
|
2019-09-14 15:51:23 +03:00
|
|
|
void deploytest::testSystemLib() {
|
|
|
|
TestUtils utils;
|
2019-04-04 18:11:38 +03:00
|
|
|
|
2019-09-14 15:51:23 +03:00
|
|
|
#ifdef Q_OS_UNIX
|
|
|
|
QString bin = TestBinDir + "TestOnlyC";
|
2019-04-04 18:11:38 +03:00
|
|
|
|
2019-09-14 15:51:23 +03:00
|
|
|
#else
|
|
|
|
QString bin = TestBinDir + "TestOnlyC.exe";
|
2019-03-29 22:12:08 +03:00
|
|
|
|
|
|
|
|
2019-09-14 15:51:23 +03:00
|
|
|
#endif
|
2019-03-29 22:12:08 +03:00
|
|
|
|
2019-09-14 15:51:23 +03:00
|
|
|
auto comapareTree = utils.createTree(
|
|
|
|
{
|
|
|
|
"./Distro/TestOnlyC.sh",
|
|
|
|
"./Distro/bin/TestOnlyC",
|
|
|
|
"./Distro/lib/ld-linux-x86-64.so",
|
|
|
|
"./Distro/lib/libc.so",
|
|
|
|
"./Distro/lib/libgcc_s.so",
|
|
|
|
"./Distro/lib/libm.so",
|
|
|
|
"./Distro/lib/libstdc++.so"
|
|
|
|
});
|
2019-03-29 22:12:08 +03:00
|
|
|
|
2019-09-14 15:51:23 +03:00
|
|
|
runTestParams({"-bin", bin, "clear" ,
|
|
|
|
"deploySystem"
|
|
|
|
}, &comapareTree);
|
2019-03-29 22:12:08 +03:00
|
|
|
|
2019-09-14 15:51:23 +03:00
|
|
|
#ifdef Q_OS_UNIX
|
2019-03-29 22:12:08 +03:00
|
|
|
|
2019-09-14 15:51:23 +03:00
|
|
|
QFile file("./Distro/TestOnlyC.sh");
|
2019-03-29 22:12:08 +03:00
|
|
|
|
2019-09-14 15:51:23 +03:00
|
|
|
QVERIFY(file.open(QIODevice::ReadOnly));
|
2019-03-29 23:02:39 +03:00
|
|
|
|
2019-09-14 15:51:23 +03:00
|
|
|
auto runScript = file.readAll();
|
|
|
|
file.close();
|
2019-03-29 23:02:39 +03:00
|
|
|
|
2019-09-14 15:51:23 +03:00
|
|
|
QVERIFY(runScript.contains("export LD_PRELOAD="));
|
2019-04-04 18:11:38 +03:00
|
|
|
|
2019-09-14 15:51:23 +03:00
|
|
|
comapareTree = utils.createTree(
|
|
|
|
{
|
|
|
|
"./Distro/TestOnlyC.sh",
|
|
|
|
"./Distro/bin/TestOnlyC",
|
|
|
|
"./Distro/lib/libgcc_s.so",
|
|
|
|
"./Distro/lib/libstdc++.so"
|
|
|
|
});
|
2019-04-04 18:11:38 +03:00
|
|
|
|
2019-09-14 15:51:23 +03:00
|
|
|
runTestParams({"-bin", bin, "clear" ,
|
|
|
|
"deploySystem", "noLibc"
|
|
|
|
}, &comapareTree, true);
|
2019-03-29 23:02:39 +03:00
|
|
|
|
2019-09-14 15:51:23 +03:00
|
|
|
file.setFileName("./Distro/TestOnlyC.sh");
|
2019-03-29 23:02:39 +03:00
|
|
|
|
2019-09-14 15:51:23 +03:00
|
|
|
QVERIFY(file.open(QIODevice::ReadOnly));
|
2019-03-29 23:02:39 +03:00
|
|
|
|
2019-09-14 15:51:23 +03:00
|
|
|
runScript = file.readAll();
|
|
|
|
file.close();
|
2019-03-29 23:02:39 +03:00
|
|
|
|
2019-09-14 15:51:23 +03:00
|
|
|
QVERIFY(!runScript.contains("export LD_PRELOAD="));
|
2019-03-29 23:02:39 +03:00
|
|
|
|
|
|
|
|
2019-09-14 15:51:23 +03:00
|
|
|
#endif
|
|
|
|
}
|
2019-03-29 18:05:55 +03:00
|
|
|
|
2019-01-26 15:34:39 +03:00
|
|
|
QTEST_APPLESS_MAIN(deploytest)
|
|
|
|
|
|
|
|
#include "tst_deploytest.moc"
|