diff --git a/src/Deploy/src/Distributions/deb.cpp b/src/Deploy/src/Distributions/deb.cpp index 7f617a4..46b3c39 100644 --- a/src/Deploy/src/Distributions/deb.cpp +++ b/src/Deploy/src/Distributions/deb.cpp @@ -28,7 +28,7 @@ bool Deb::deployTemplate(PackageControl &pkg) { QuasarAppUtils::Params::log("Using custom template for debian pacakge: " + customTemplate, QuasarAppUtils::Info); - auto availablePacakages = QDir(customTemplate).entryInfoList(QDir::Dirs | QDir::NoDotAndDotDot); + auto availablePacakages = QDir(customTemplate).entryInfoList(QDir::Dirs | QDir::NoDotAndDotDot | QDir::Hidden); for (const auto& pkg: availablePacakages) { pakcagesTemplates.insert(pkg.fileName(), pkg.absoluteFilePath()); diff --git a/src/Deploy/src/Distributions/idistribution.cpp b/src/Deploy/src/Distributions/idistribution.cpp index 52968ce..8ae2bed 100644 --- a/src/Deploy/src/Distributions/idistribution.cpp +++ b/src/Deploy/src/Distributions/idistribution.cpp @@ -108,7 +108,7 @@ bool iDistribution::unpackDir(const QString &resource, QDir res(resource); - auto list = res.entryInfoList(QDir::NoDotAndDotDot | QDir::AllEntries); + auto list = res.entryInfoList(QDir::NoDotAndDotDot | QDir::AllEntries | QDir::Hidden); for (const auto & item :list) { diff --git a/src/Deploy/src/Distributions/qif.cpp b/src/Deploy/src/Distributions/qif.cpp index af553cf..d9ec506 100644 --- a/src/Deploy/src/Distributions/qif.cpp +++ b/src/Deploy/src/Distributions/qif.cpp @@ -129,7 +129,7 @@ bool QIF::deployTemplate(PackageControl &pkg) { QuasarAppUtils::Params::log("Using custom template for installer: " + customTemplate, QuasarAppUtils::Info); - auto availablePacakages = QDir(customTemplate + "/packages").entryInfoList(QDir::Dirs | QDir::NoDotAndDotDot); + auto availablePacakages = QDir(customTemplate + "/packages").entryInfoList(QDir::Dirs | QDir::NoDotAndDotDot | QDir::Hidden); for (const auto& pkg: availablePacakages) { pakcagesTemplates.insert(pkg.fileName(), pkg.absoluteFilePath()); @@ -237,7 +237,7 @@ QString QIF::location(const DistroModule &module) const { QString QIF::getStyle(const QString& input) const { QDir resurces(":/Styles/Distributions/Templates/qif/Styles"); - auto list = resurces.entryInfoList(QDir::Files); + auto list = resurces.entryInfoList(QDir::Files | QDir::Hidden); for (const auto& style : list) { if (input == style.baseName()) { QuasarAppUtils::Params::log(QString("Use the %0 installer style").arg(style.baseName()), diff --git a/src/Deploy/src/configparser.cpp b/src/Deploy/src/configparser.cpp index a41d262..783005c 100644 --- a/src/Deploy/src/configparser.cpp +++ b/src/Deploy/src/configparser.cpp @@ -961,9 +961,9 @@ bool ConfigParser::setTargetsInDir(const QString &dir, bool recursive) { QFileInfoList list; if (recursive) { - list = d.entryInfoList(QDir::Files | QDir::Dirs | QDir::NoDotAndDotDot); + list = d.entryInfoList(QDir::Files | QDir::Dirs | QDir::NoDotAndDotDot | QDir::Hidden); } else { - list = d.entryInfoList(QDir::Files | QDir::NoDotAndDotDot); + list = d.entryInfoList(QDir::Files | QDir::NoDotAndDotDot | QDir::Hidden); } bool result = false; @@ -1639,7 +1639,7 @@ QSet ConfigParser::getSetDirsRecursive(const QString &path, int maxDepc return res; } - auto list = dir.entryInfoList(QDir::Dirs| QDir::NoDotAndDotDot); + auto list = dir.entryInfoList(QDir::Dirs| QDir::NoDotAndDotDot | QDir::Hidden); for (const auto &subDir: list) { res.insert(subDir.absoluteFilePath()); diff --git a/src/Deploy/src/deploycore.cpp b/src/Deploy/src/deploycore.cpp index c28b381..d4062b1 100644 --- a/src/Deploy/src/deploycore.cpp +++ b/src/Deploy/src/deploycore.cpp @@ -646,7 +646,7 @@ bool DeployCore::isContainsArraySeparators(const QString &val, int lastLvl) { QString DeployCore::findProcess(const QString &env, const QString& proc, bool ignoreSymLinks) { auto list = env.split(DeployCore::getEnvSeparator()); - auto findEntries = QDir::NoDotAndDotDot | QDir::Files; + auto findEntries = QDir::NoDotAndDotDot | QDir::Files | QDir::Hidden; if (ignoreSymLinks) { findEntries = findEntries | QDir::NoSymLinks; } @@ -773,7 +773,7 @@ QString DeployCore::getVCredist(const QString &_qtbinDir) { return ""; } - auto infoList = dir.entryInfoList(QDir::Files | QDir::NoDotAndDotDot); + auto infoList = dir.entryInfoList(QDir::Files | QDir::NoDotAndDotDot | QDir::Hidden); auto name = getMSVCName(msvc); auto version = getMSVCVersion(msvc); diff --git a/src/Deploy/src/envirement.cpp b/src/Deploy/src/envirement.cpp index 82aa81d..6bf50b4 100644 --- a/src/Deploy/src/envirement.cpp +++ b/src/Deploy/src/envirement.cpp @@ -133,7 +133,7 @@ QStringList Envirement::recursiveInvairement(QDir &dir, int depch, int depchLimi return {dir.absolutePath()}; } - QFileInfoList list = dir.entryInfoList(QDir::Dirs | QDir::NoDotAndDotDot); + QFileInfoList list = dir.entryInfoList(QDir::Dirs | QDir::NoDotAndDotDot | QDir::Hidden); QStringList res = {}; for (QFileInfo &i : list) { diff --git a/src/Deploy/src/extracter.cpp b/src/Deploy/src/extracter.cpp index 73edcb9..f4d200b 100644 --- a/src/Deploy/src/extracter.cpp +++ b/src/Deploy/src/extracter.cpp @@ -357,7 +357,7 @@ bool Extracter::copyTranslations(const QStringList &list, const QString& package filters.push_back("*" + i + "*"); } - auto listItems = dir.entryInfoList(filters, QDir::Files | QDir::NoDotAndDotDot); + auto listItems = dir.entryInfoList(filters, QDir::Files | QDir::NoDotAndDotDot | QDir::Hidden); auto targetPath = cnf->getTargetDir() + "/" + package; auto distro = cnf->getDistroFromPackage(package); @@ -383,7 +383,7 @@ QFileInfoList Extracter::findFilesInsideDir(const QString &name, QDir dir(dirpath); - auto list = dir.entryInfoList( QDir::Files | QDir::Dirs | QDir::NoDotAndDotDot); + auto list = dir.entryInfoList( QDir::Files | QDir::Dirs | QDir::NoDotAndDotDot | QDir::Hidden); for (const auto & item :list) { if (item.isFile()) { @@ -501,7 +501,7 @@ bool Extracter::extractQml() { } } else { for (const auto& plugin: std::as_const(plugins)) { - const auto qmlFiles = QDir(plugin).entryInfoList(QDir::Files); + const auto qmlFiles = QDir(plugin).entryInfoList(QDir::Files | QDir::Hidden); for (const auto& qmlFile: qmlFiles) { toCopyQmlFiles.push_back(qmlFile.absoluteFilePath()); } diff --git a/src/Deploy/src/filemanager.cpp b/src/Deploy/src/filemanager.cpp index d1994f3..743f6d6 100644 --- a/src/Deploy/src/filemanager.cpp +++ b/src/Deploy/src/filemanager.cpp @@ -142,7 +142,7 @@ bool FileManager::strip(const QString &dir) const { if (info.isDir()) { QDir d(dir); - auto list = d.entryInfoList(QDir::Files | QDir::Dirs | QDir::NoDotAndDotDot); + auto list = d.entryInfoList(QDir::Files | QDir::Dirs | QDir::NoDotAndDotDot | QDir::Hidden); bool res = false; for (const auto &i : list) { @@ -298,7 +298,7 @@ bool FileManager::copyFolder(const QString &from, QDir fromDir(from); - auto list = fromDir.entryInfoList(QDir::NoDotAndDotDot | QDir::AllEntries); + auto list = fromDir.entryInfoList(QDir::NoDotAndDotDot | QDir::AllEntries | QDir::Hidden); for (const auto &item : list) { if (item.isDir()) { @@ -402,7 +402,7 @@ bool FileManager::moveFolder(const QString &from, const QString &to, const QStri } QDir dir(from); - auto list = dir.entryInfoList(QDir::Files | QDir::Dirs | QDir::NoDotAndDotDot); + auto list = dir.entryInfoList(QDir::Files | QDir::Dirs | QDir::NoDotAndDotDot | QDir::Hidden); for (const auto &i :list) { auto targetDir = to; if (i.isDir()) { diff --git a/src/Deploy/src/pluginsparser.cpp b/src/Deploy/src/pluginsparser.cpp index 0af4231..0a16a12 100644 --- a/src/Deploy/src/pluginsparser.cpp +++ b/src/Deploy/src/pluginsparser.cpp @@ -153,7 +153,7 @@ bool PluginsParser::scan(const QString& pluginPath, DeployCore::QtModule qtModules, const QString& package) { - auto plugins = QDir(pluginPath).entryInfoList(QDir::Dirs | QDir::NoDotAndDotDot); + auto plugins = QDir(pluginPath).entryInfoList(QDir::Dirs | QDir::NoDotAndDotDot | QDir::Hidden); for (const auto &plugin: plugins) { scanPluginGroup(plugin, resDependencies, package, qtModules); } @@ -167,7 +167,7 @@ void PluginsParser::addPlugins(const QStringList& list, const QString& package, for (const auto &plugin: std::as_const(list)) { if (QFileInfo(cnf->qtDir.getPlugins() + "/" + plugin).isDir()) { - auto listPlugins = QDir(cnf->qtDir.getPlugins() + "/" + plugin).entryInfoList(QDir::Files | QDir::NoDotAndDotDot); + auto listPlugins = QDir(cnf->qtDir.getPlugins() + "/" + plugin).entryInfoList(QDir::Files | QDir::NoDotAndDotDot | QDir::Hidden); for (const auto &plugin: listPlugins) { container[package].insert(getPluginNameFromFile( plugin.baseName())); @@ -211,7 +211,7 @@ void PluginsParser::scanPlatforms(const QString& package, QList& disabl auto platform = cnf->getPlatform(package); QString platformPluginPath = cnf->qtDir.getPlugins() + "/platforms"; - auto plugins = QDir(platformPluginPath).entryInfoList(QDir::Files | QDir::NoDotAndDotDot); + auto plugins = QDir(platformPluginPath).entryInfoList(QDir::Files | QDir::NoDotAndDotDot | QDir::Hidden); for (const auto &plugin: plugins) { @@ -229,7 +229,7 @@ void PluginsParser::scanPluginGroup(const QFileInfo& plugin, const QString &package, DeployCore::QtModule qtModules) const { - auto plugins = QDir(plugin.absoluteFilePath()).entryInfoList(QDir::Files | QDir::NoDotAndDotDot); + auto plugins = QDir(plugin.absoluteFilePath()).entryInfoList(QDir::Files | QDir::NoDotAndDotDot | QDir::Hidden); auto groupModule = qtModuleForPluginGroup(plugin.fileName()); for (const auto& info: plugins) { diff --git a/tests/res.qrc b/tests/res.qrc index 9d01e3e..528b91b 100644 --- a/tests/res.qrc +++ b/tests/res.qrc @@ -14,6 +14,10 @@ testRes/qml/Scene testRes/qml/SceneQt6 testRes/qml/qmldir + testRes/.hidenAssets/win64/.mingw/cqtdeployer.exe + testRes/.hidenAssets/win64/.mingw/.Deploy.dll + testRes/.hidenAssets/win64/msvc/lib.dll + testRes/.hidenAssets/win64/msvc/exe.exe testRes/TestQMLWidgets.sh diff --git a/tests/testRes/.hidenAssets/win64/.mingw/.Deploy.dll b/tests/testRes/.hidenAssets/win64/.mingw/.Deploy.dll new file mode 100644 index 0000000..885536f Binary files /dev/null and b/tests/testRes/.hidenAssets/win64/.mingw/.Deploy.dll differ diff --git a/tests/testRes/.hidenAssets/win64/.mingw/cqtdeployer.exe b/tests/testRes/.hidenAssets/win64/.mingw/cqtdeployer.exe new file mode 100644 index 0000000..b46d3a4 Binary files /dev/null and b/tests/testRes/.hidenAssets/win64/.mingw/cqtdeployer.exe differ diff --git a/tests/testRes/.hidenAssets/win64/msvc/exe.exe b/tests/testRes/.hidenAssets/win64/msvc/exe.exe new file mode 100755 index 0000000..67f6f08 Binary files /dev/null and b/tests/testRes/.hidenAssets/win64/msvc/exe.exe differ diff --git a/tests/testRes/.hidenAssets/win64/msvc/lib.dll b/tests/testRes/.hidenAssets/win64/msvc/lib.dll new file mode 100644 index 0000000..d33efe0 Binary files /dev/null and b/tests/testRes/.hidenAssets/win64/msvc/lib.dll differ diff --git a/tests/tstMain.cpp b/tests/tstMain.cpp index 4e65f13..9c55b18 100644 --- a/tests/tstMain.cpp +++ b/tests/tstMain.cpp @@ -10,6 +10,7 @@ #ifdef Q_OS_LINUX #include "extradependstest.h" +#include "hidenfilestest.h" #include "allowemptypackagestest.h" #include "binprefixtest.h" @@ -102,6 +103,7 @@ private slots: // main tests works on linux only #ifdef Q_OS_LINUX + TestCase(hidenFilesTest, HidenFilesTest) TestCase(extraDependsTest, ExtraDependsTest) TestCase(allowemptypackagestest, AllowEmptyPackagesTest ) TestCase(binprefixtest, BinPrefixTest) diff --git a/tests/units/linux/hidenfilestest.cpp b/tests/units/linux/hidenfilestest.cpp new file mode 100644 index 0000000..1532f4a --- /dev/null +++ b/tests/units/linux/hidenfilestest.cpp @@ -0,0 +1,40 @@ +//# +//# Copyright (C) 2020-2024 QuasarApp. +//# Distributed under the GPLv3 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 "hidenfilestest.h" + +#include + + + +void HidenFilesTest::test() { +#ifdef Q_OS_UNIX + TestUtils utils; + + + QDir("tstAssets").removeRecursively(); + FileManager files; + files.cp(":/testRes/.hidenAssets", "tstAssets"); + + + auto comapareTree = utils.createTree({ + "./" + DISTRO_DIR + "/Application.deb", + "./" + DISTRO_DIR + "/Application.deb.md5", + + }); + + runTestParams({"-extraData", "tstAssets", "clear" , + "deb", "verbose"}, &comapareTree, true); + + // test clear for deb + runTestParams({"clear", "verbose"}, nullptr, true); + + QDir("tstAssets").removeRecursively(); + +#endif +} diff --git a/tests/units/linux/hidenfilestest.h b/tests/units/linux/hidenfilestest.h new file mode 100644 index 0000000..e8c8806 --- /dev/null +++ b/tests/units/linux/hidenfilestest.h @@ -0,0 +1,23 @@ +//# +//# Copyright (C) 2020-2024 QuasarApp. +//# Distributed under the GPLv3 software license, see the accompanying +//# Everyone is permitted to copy and distribute verbatim copies +//# of this license document, but changing it is not allowed. +//# + + +#ifndef HidenFilesTest_H +#define HidenFilesTest_H +#include "testbase.h" +#include "testutils.h" + +#include + +class HidenFilesTest: public TestBase, protected TestUtils +{ +public: + void test() override; + +}; + +#endif // HidenFilesTest_H diff --git a/tests/units/testutils.cpp b/tests/units/testutils.cpp index 0e4a9a5..36275d0 100644 --- a/tests/units/testutils.cpp +++ b/tests/units/testutils.cpp @@ -34,7 +34,7 @@ QSet TestUtils::getTree(const QString &path, int limit, int depch) { } QDir dir(info.absoluteFilePath()); - auto list = dir.entryInfoList(QDir::AllEntries | QDir::NoDotAndDotDot); + auto list = dir.entryInfoList(QDir::AllEntries | QDir::NoDotAndDotDot | QDir::Hidden); for (const auto &i: std::as_const(list)) { result.unite(getTree(i.absoluteFilePath(), limit, depch + 1)); } @@ -61,7 +61,7 @@ QSet TestUtils::getFilesSet(const QString &path, int limit, int depch) } QDir dir(info.absoluteFilePath()); - auto list = dir.entryInfoList(QDir::AllEntries | QDir::NoDotAndDotDot); + auto list = dir.entryInfoList(QDir::AllEntries | QDir::NoDotAndDotDot | QDir::Hidden); for (const auto &i: std::as_const(list)) { result.unite(getFilesSet(i.absoluteFilePath(), limit, depch + 1)); }