diff --git a/Deploy/Deploy.pro b/Deploy/Deploy.pro index fc44556..64c9d12 100644 --- a/Deploy/Deploy.pro +++ b/Deploy/Deploy.pro @@ -45,7 +45,7 @@ include('$$PWD/../pe/pe-parser-library/pe-parser-library.pri') SOURCES += \ - cqt.cpp \ + configparser.cpp \ deploy.cpp \ deploycore.cpp \ envirement.cpp \ @@ -61,7 +61,7 @@ SOURCES += \ libinfo.cpp HEADERS += \ - cqt.h \ + configparser.h \ deploy.h \ deploy_global.h \ deploycore.h \ diff --git a/Deploy/cqt.cpp b/Deploy/configparser.cpp similarity index 89% rename from Deploy/cqt.cpp rename to Deploy/configparser.cpp index b66207c..8446b91 100644 --- a/Deploy/cqt.cpp +++ b/Deploy/configparser.cpp @@ -1,4 +1,4 @@ -#include "cqt.h" +#include "configparser.h" #include #include #include @@ -7,7 +7,7 @@ #include "filemanager.h" #include "quasarapp.h" -bool CQT::parseParams() { +bool ConfigParser::parseParams() { auto path = QuasarAppUtils::Params::getStrArg("confFile"); bool createFile = !path.isEmpty(); @@ -64,11 +64,11 @@ bool CQT::parseParams() { return true; } -const DeployConfig *CQT::config() const { +const DeployConfig *ConfigParser::config() const { return &_config; } -void CQT::writeKey(const QString& key, QJsonObject& obj) const { +void ConfigParser::writeKey(const QString& key, QJsonObject& obj) const { if (QuasarAppUtils::Params::isEndable(key)) { auto list = QuasarAppUtils::Params::getStrArg(key).split(','); @@ -92,7 +92,7 @@ void CQT::writeKey(const QString& key, QJsonObject& obj) const { } } -void CQT::readKey(const QString& key, const QJsonObject& obj) const { +void ConfigParser::readKey(const QString& key, const QJsonObject& obj) const { if (!QuasarAppUtils::Params::isEndable(key)) { if (obj[key].isArray()) { @@ -120,7 +120,7 @@ void CQT::readKey(const QString& key, const QJsonObject& obj) const { } } -bool CQT::createFromDeploy(const QString& confFile) const { +bool ConfigParser::createFromDeploy(const QString& confFile) const { QJsonObject obj; for (auto &key :DeployCore::helpKeys()) { @@ -142,7 +142,7 @@ bool CQT::createFromDeploy(const QString& confFile) const { } -bool CQT::loadFromFile(const QString& confFile) { +bool ConfigParser::loadFromFile(const QString& confFile) { QFile file(confFile); if (file.open(QIODevice::ReadOnly)) { @@ -166,7 +166,7 @@ bool CQT::loadFromFile(const QString& confFile) { return false; } -bool CQT::parseQtDeployMode() { +bool ConfigParser::parseQtDeployMode() { auto bin = QuasarAppUtils::Params::getStrArg("bin").split(','); @@ -234,7 +234,7 @@ bool CQT::parseQtDeployMode() { return true; } -bool CQT::parseQtInfoMode() { +bool ConfigParser::parseQtInfoMode() { if ((QuasarAppUtils::Params::isEndable("v") || QuasarAppUtils::Params::isEndable("version"))) { DeployCore::printVersion(); @@ -246,13 +246,13 @@ bool CQT::parseQtInfoMode() { return true; } -bool CQT::parseQtClearMode() { +bool ConfigParser::parseQtClearMode() { setTargetDir("./"); return true; } -void CQT::setTargetDir(const QString &target) { +void ConfigParser::setTargetDir(const QString &target) { if (QuasarAppUtils::Params::isEndable("targetDir")) { _config.targetDir = QFileInfo(QuasarAppUtils::Params::getStrArg("targetDir")).absoluteFilePath(); @@ -268,7 +268,7 @@ void CQT::setTargetDir(const QString &target) { } } -bool CQT::setTargets(const QStringList &value) { +bool ConfigParser::setTargets(const QStringList &value) { bool isfillList = false; @@ -305,7 +305,7 @@ bool CQT::setTargets(const QStringList &value) { return true; } -bool CQT::setTargetsRecursive(const QString &dir) { +bool ConfigParser::setTargetsRecursive(const QString &dir) { if (!setBinDir(dir, true)) { qWarning() << "setBinDir failed!"; return false; @@ -316,7 +316,7 @@ bool CQT::setTargetsRecursive(const QString &dir) { return true; } -bool CQT::setBinDir(const QString &dir, bool recursive) { +bool ConfigParser::setBinDir(const QString &dir, bool recursive) { QDir d(dir); if (dir.isEmpty() || !d.exists()) { DeployCore::verboseLog(dir + " dir not exits!"); @@ -355,7 +355,7 @@ bool CQT::setBinDir(const QString &dir, bool recursive) { return result; } -void CQT::initIgnoreList() +void ConfigParser::initIgnoreList() { if (QuasarAppUtils::Params::isEndable("ignore")) { auto list = QuasarAppUtils::Params::getStrArg("ignore").split(','); @@ -368,7 +368,7 @@ void CQT::initIgnoreList() } } -void CQT::initIgnoreEnvList() { +void ConfigParser::initIgnoreEnvList() { if (QuasarAppUtils::Params::isEndable("ignoreEnv")) { auto ignoreList = QuasarAppUtils::Params::getStrArg("ignoreEnv").split(','); @@ -388,14 +388,14 @@ void CQT::initIgnoreEnvList() { } } -void CQT::setQmlScaner(const QString &value) { +void ConfigParser::setQmlScaner(const QString &value) { _config.externQmlScaner = QDir::fromNativeSeparators(value); QuasarAppUtils::Params::verboseLog("qmlScaner = " + _config.externQmlScaner, QuasarAppUtils::VerboseLvl::Info); _config.deployQml = QFileInfo(_config.externQmlScaner).isFile(); } -void CQT::setQmake(const QString &value) { +void ConfigParser::setQmake(const QString &value) { _config.qmake = QDir::fromNativeSeparators(value); QFileInfo info(_config.qmake); @@ -419,7 +419,7 @@ void CQT::setQmake(const QString &value) { QuasarAppUtils::Params::verboseLog("translations = " + _config.translationDir); } -void CQT::setQtDir(const QString &value) { +void ConfigParser::setQtDir(const QString &value) { _config.qtDir = QDir::fromNativeSeparators(value); _config.envirement.addEnv(_config.qtDir, _config.appDir, _config.targetDir); _config.envirement.addEnv(_config.qtDir + "/lib", _config.appDir, _config.targetDir); @@ -427,7 +427,7 @@ void CQT::setQtDir(const QString &value) { } -void CQT::setExtraPath(const QStringList &value) { +void ConfigParser::setExtraPath(const QStringList &value) { QDir dir; for (auto i : value) { @@ -448,14 +448,14 @@ void CQT::setExtraPath(const QStringList &value) { } } -void CQT::setExtraPlugins(const QStringList &value) { +void ConfigParser::setExtraPlugins(const QStringList &value) { for (auto i : value) { if (!i.isEmpty()) _config.extraPlugins.append(i); } } -QString CQT::recursiveInvairement(int depch, QDir &dir) { +QString ConfigParser::recursiveInvairement(int depch, QDir &dir) { char separator = ':'; @@ -483,7 +483,7 @@ QString CQT::recursiveInvairement(int depch, QDir &dir) { return res; } -void CQT::initEnvirement() { +void ConfigParser::initEnvirement() { QProcessEnvironment env = QProcessEnvironment::systemEnvironment(); _config.envirement.addEnv(env.value("LD_LIBRARY_PATH"), _config.appDir, _config.targetDir); _config.envirement.addEnv(env.value("PATH"), _config.appDir, _config.targetDir); @@ -505,7 +505,7 @@ void CQT::initEnvirement() { } } -QStringList CQT::getDirsRecursive(const QString &path, int maxDepch, int depch) { +QStringList ConfigParser::getDirsRecursive(const QString &path, int maxDepch, int depch) { QDir dir(path); QStringList res; @@ -524,7 +524,7 @@ QStringList CQT::getDirsRecursive(const QString &path, int maxDepch, int depch) return res; } -bool CQT::smartMoveTargets() { +bool ConfigParser::smartMoveTargets() { QMap temp; bool result = true; @@ -533,8 +533,8 @@ bool CQT::smartMoveTargets() { QFileInfo target(i.key()); auto targetPath = _config.targetDir + (DeployCore::isLib(target) ? "/lib" : "/bin"); - if (target.completeSuffix().contains("dll", Qt::CaseInsensitive) || - target.completeSuffix().contains("exe", Qt::CaseInsensitive)) { + if (target.completeSuffix().compare("dll", Qt::CaseInsensitive) == 0 || + target.completeSuffix().compare("exe", Qt::CaseInsensitive) == 0) { targetPath = _config.targetDir; @@ -554,7 +554,7 @@ bool CQT::smartMoveTargets() { return result; } -CQT::CQT(FileManager *filemanager): +ConfigParser::ConfigParser(FileManager *filemanager): _fileManager(filemanager) { assert(_fileManager); diff --git a/Deploy/cqt.h b/Deploy/configparser.h similarity index 91% rename from Deploy/cqt.h rename to Deploy/configparser.h index 24dd574..ef65ddc 100644 --- a/Deploy/cqt.h +++ b/Deploy/configparser.h @@ -35,10 +35,7 @@ struct DEPLOYSHARED_EXPORT DeployConfig { }; -/** - * @brief The CQT class - it is wrapper for cqt file. qcn it is configuration file of deploying project. - */ -class DEPLOYSHARED_EXPORT CQT +class DEPLOYSHARED_EXPORT ConfigParser { private: @@ -76,7 +73,7 @@ private: void writeKey(const QString &key, QJsonObject &) const; void readKey(const QString &key, const QJsonObject &obj) const; public: - CQT(FileManager *filemanager); + ConfigParser(FileManager *filemanager); bool parseParams(); bool smartMoveTargets(); diff --git a/Deploy/dependenciesscanner.cpp b/Deploy/dependenciesscanner.cpp index 04b99fb..c9c0428 100644 --- a/Deploy/dependenciesscanner.cpp +++ b/Deploy/dependenciesscanner.cpp @@ -24,8 +24,8 @@ PrivateScaner DependenciesScanner::getScaner(const QString &lib) const { auto sufix = info.completeSuffix(); - if (sufix.contains("dll", Qt::CaseSensitive) || - sufix.contains("exe", Qt::CaseSensitive)) { + if (sufix.compare("dll", Qt::CaseSensitive) == 0 || + sufix.compare("exe", Qt::CaseSensitive) == 0) { return PrivateScaner::PE; } else if (sufix.isEmpty() || sufix.contains("so", Qt::CaseSensitive)) { return PrivateScaner::ELF; diff --git a/Deploy/deploy.cpp b/Deploy/deploy.cpp index aac7272..44a8fc1 100644 --- a/Deploy/deploy.cpp +++ b/Deploy/deploy.cpp @@ -5,7 +5,7 @@ * of this license document, but changing it is not allowed. */ -#include "cqt.h" +#include "configparser.h" #include "deploy.h" #include "extracter.h" #include "filemanager.h" @@ -13,7 +13,7 @@ Deploy::Deploy() { _fileManager = new FileManager(); - _paramsParser = new CQT(_fileManager); + _paramsParser = new ConfigParser(_fileManager); } int Deploy::run() { diff --git a/Deploy/deploy.h b/Deploy/deploy.h index f50ad64..fafec37 100644 --- a/Deploy/deploy.h +++ b/Deploy/deploy.h @@ -10,7 +10,7 @@ #include "deploy_global.h" -class CQT; +class ConfigParser; class Extracter; class FileManager; @@ -18,7 +18,7 @@ class DEPLOYSHARED_EXPORT Deploy { private: - CQT * _paramsParser = nullptr; + ConfigParser * _paramsParser = nullptr; Extracter *_extracter = nullptr; FileManager *_fileManager = nullptr; diff --git a/Deploy/deploycore.cpp b/Deploy/deploycore.cpp index da9887f..9f0e4a8 100644 --- a/Deploy/deploycore.cpp +++ b/Deploy/deploycore.cpp @@ -13,7 +13,7 @@ #include #include #include -#include +#include //QString DeployCore::qtDir = ""; //QStringList DeployCore::extraPaths = QStringList(); diff --git a/Deploy/extracter.cpp b/Deploy/extracter.cpp index 67142f0..b744aaa 100644 --- a/Deploy/extracter.cpp +++ b/Deploy/extracter.cpp @@ -8,7 +8,7 @@ #include "extracter.h" #include "deploycore.h" #include "pluginsparser.h" -#include "cqt.h" +#include "configparser.h" #include #include #include @@ -224,7 +224,7 @@ void Extracter::createRunMetaFiles() for (auto i = DeployCore::_config->targets.cbegin(); i != DeployCore::_config->targets.cend(); ++i) { - if (QFileInfo(i.key()).completeSuffix() == "exe") { + if (QFileInfo(i.key()).completeSuffix().compare("exe", Qt::CaseInsensitive) == 0) { targetWindows = true; } @@ -435,8 +435,8 @@ void Extracter::extract(const QString &file) { auto sufix = info.completeSuffix(); - if (sufix.contains("dll", Qt::CaseSensitive) || - sufix.contains("exe", Qt::CaseSensitive) || + if (sufix.compare("dll", Qt::CaseSensitive) == 0 || + sufix.compare("exe", Qt::CaseSensitive) == 0 || sufix.isEmpty() || sufix.contains("so", Qt::CaseSensitive)) { extractLib(file); @@ -446,7 +446,7 @@ void Extracter::extract(const QString &file) { } -Extracter::Extracter(FileManager *fileManager, CQT *cqt): +Extracter::Extracter(FileManager *fileManager, ConfigParser *cqt): _fileManager(fileManager), _cqt(cqt) { diff --git a/Deploy/extracter.h b/Deploy/extracter.h index d328dd9..18ea740 100644 --- a/Deploy/extracter.h +++ b/Deploy/extracter.h @@ -15,7 +15,7 @@ #include "filemanager.h" #include "qml.h" -class CQT; +class ConfigParser; class DEPLOYSHARED_EXPORT Extracter { private: @@ -26,7 +26,7 @@ class DEPLOYSHARED_EXPORT Extracter { DependenciesScanner scaner; FileManager *_fileManager; - CQT *_cqt; + ConfigParser *_cqt; void extract(const QString &file); bool copyTranslations(QStringList list); @@ -63,7 +63,7 @@ class DEPLOYSHARED_EXPORT Extracter { void copyExtraPlugins(); public: - explicit Extracter(FileManager *fileManager, CQT * cqt); + explicit Extracter(FileManager *fileManager, ConfigParser * cqt); bool createRunScript(const QString &target); void deploy(); diff --git a/Deploy/filemanager.cpp b/Deploy/filemanager.cpp index 254aa1d..8135e2b 100644 --- a/Deploy/filemanager.cpp +++ b/Deploy/filemanager.cpp @@ -310,8 +310,8 @@ void FileManager::copyFiles(const QStringList &files, const QString& targetDir) for (auto file : files) { QFileInfo target(file); auto targetPath = targetDir + QDir::separator() + "lib"; - if (target.completeSuffix().contains("dll", Qt::CaseInsensitive) || - target.completeSuffix().contains("exe", Qt::CaseInsensitive)) { + if (target.completeSuffix().compare("dll", Qt::CaseInsensitive) == 0 || + target.completeSuffix().compare("exe", Qt::CaseInsensitive) == 0) { targetPath = targetDir; } diff --git a/Deploy/pe.cpp b/Deploy/pe.cpp index 7e2a043..a0ae0f6 100644 --- a/Deploy/pe.cpp +++ b/Deploy/pe.cpp @@ -55,6 +55,9 @@ PE::PE(): IGetLibInfo () { bool PE::getLibInfo(const QString &lib, LibInfo &info) const { auto parsedPeLib = peparse::ParsePEFromFile(lib.toLatin1()); + if (!parsedPeLib) + return false; + if (static_cast(parsedPeLib->peHeader.nt.OptionalMagic) == RunType::_32bit) { info.setPlatform(Platform::Win32); } else if (static_cast(parsedPeLib->peHeader.nt.OptionalMagic) == RunType::_64bit) { diff --git a/UnitTests/modules.cpp b/UnitTests/modules.cpp index 459183b..101edb0 100644 --- a/UnitTests/modules.cpp +++ b/UnitTests/modules.cpp @@ -128,6 +128,13 @@ QSet Modules::qtLibs() { QSet Modules::qmlLibs() { TestUtils utils; +#ifdef Q_OS_WIN + auto tree = utils.createTree( + { + }); +#else + + auto tree = utils.createTree( { "./Distro/TestQMLWidgets.sh", @@ -709,6 +716,7 @@ QSet Modules::qmlLibs() { "./Distro/translations/qtdeclarative_sk.qm", "./Distro/translations/qtdeclarative_uk.qm" }); +#endif return tree; } diff --git a/UnitTests/tst_deploytest.cpp b/UnitTests/tst_deploytest.cpp index e3aaa38..abab9b3 100644 --- a/UnitTests/tst_deploytest.cpp +++ b/UnitTests/tst_deploytest.cpp @@ -12,7 +12,7 @@ #include #include #include -#include +#include #include #include @@ -278,7 +278,7 @@ void deploytest::cleanupTestCase() { void deploytest::testDeployTarget() { FileManager file; - CQT *deploy = new CQT(&file); + ConfigParser *deploy = new ConfigParser(&file); QStringList targets; targets << "./test/bins/execTarget.exe"; @@ -286,31 +286,31 @@ void deploytest::testDeployTarget() { delete deploy; targets.clear(); - deploy = new CQT(&file); + deploy = new ConfigParser(&file); targets << "./test/bins/execTarget"; QVERIFY(deploy->setTargets(targets)); delete deploy; targets.clear(); - deploy = new CQT(&file); + deploy = new ConfigParser(&file); targets << "./test/bins/execTarget.exe" << "./test/bins/execTarget"; QVERIFY(deploy->setTargets(targets)); delete deploy; targets.clear(); - deploy = new CQT(&file); + deploy = new ConfigParser(&file); targets << "./test/bns/execTarget.exe"; QVERIFY(!deploy->setTargets(targets)); delete deploy; targets.clear(); - deploy = new CQT(&file); + deploy = new ConfigParser(&file); targets << "./test/bins/"; QVERIFY(deploy->setTargets(targets)); delete deploy; targets.clear(); - deploy = new CQT(&file); + deploy = new ConfigParser(&file); targets << "./test/bins/" << "./test/warning/"; QVERIFY(deploy->setTargets(targets)); @@ -463,7 +463,7 @@ void deploytest::testQmlExtrct() { void deploytest::testSetTargetDir() { FileManager file; - CQT dep(&file); + ConfigParser dep(&file); dep.setTargetDir(); @@ -561,19 +561,22 @@ void deploytest::testOverwrite() { TestUtils utils; #ifdef Q_OS_UNIX + QFile f("./Distro/bin/TestOnlyC"); auto comapareTree = utils.createTree( {"./Distro/bin/TestOnlyC", "./Distro/TestOnlyC.sh"}); + QString bin = TestBinDir + "TestOnlyC"; + #else + QFile f("./Distro/TestOnlyC.exe"); auto comapareTree = utils.createTree( {"./Distro/TestOnlyC.exe", "./Distro/qt.conf"}); + QString bin = TestBinDir + "TestOnlyC.exe"; + #endif - runTestParams({"-bin", TestBinDir + "TestOnlyC", "force-clear", "noOverwrite"}, &comapareTree); - - - QFile f("./Distro/bin/TestOnlyC"); + runTestParams({"-bin", bin, "force-clear", "noOverwrite"}, &comapareTree); QVERIFY(f.open(QIODevice::ReadOnly)); auto hashBefor = QCryptographicHash::hash(f.readAll(), QCryptographicHash::Md5); @@ -589,7 +592,7 @@ void deploytest::testOverwrite() { QVERIFY(hashAfter != hashBefor); - runTestParams({"-bin", TestBinDir + "TestOnlyC", "noOverwrite"}, &comapareTree); + runTestParams({"-bin", bin, "noOverwrite"}, &comapareTree); QVERIFY(f.open(QIODevice::ReadOnly)); hashAfter = QCryptographicHash::hash(f.readAll(), QCryptographicHash::Md5); @@ -598,7 +601,7 @@ void deploytest::testOverwrite() { QVERIFY(hashAfter != hashBefor); - runTestParams({"-bin", TestBinDir + "TestOnlyC"}, &comapareTree); + runTestParams({"-bin", bin}, &comapareTree); QVERIFY(f.open(QIODevice::ReadOnly)); hashAfter = QCryptographicHash::hash(f.readAll(), QCryptographicHash::Md5); @@ -727,10 +730,7 @@ void deploytest::testQt() { bin = TestBinDir + "QtWidgetsProject"; #else - auto comapareTree = utils.createTree( - {"./Distro/TestQMLWidgets.exe", - "./Distro/qt.conf"}); - QString bin = TestBinDir + "QtWidgetsProject.exe"; + bin = TestBinDir + "QtWidgetsProject.exe"; #endif comapareTree = Modules::qtLibs(); @@ -744,10 +744,10 @@ void deploytest::testQt() { bin = TestBinDir + "QtWidgetsProject"; #else - auto comapareTree = utils.createTree( + comapareTree = utils.createTree( {"./Distro/TestQMLWidgets.exe", "./Distro/qt.conf"}); - QString bin = TestBinDir + "QtWidgetsProject.exe"; + bin = TestBinDir + "QtWidgetsProject.exe"; #endif