From 76b0de756bb028010e3224b64a84e6f395b348c5 Mon Sep 17 00:00:00 2001 From: "a.yankovich" Date: Fri, 5 Apr 2019 16:52:53 +0300 Subject: [PATCH] major tests crashed --- Deploy/dependenciesscanner.cpp | 50 ++++++++++++++++++---------------- Deploy/elf.cpp | 5 ++-- Deploy/libinfo.cpp | 4 --- Deploy/libinfo.h | 2 -- Deploy/pe.cpp | 2 +- UnitTests/tst_deploytest.cpp | 3 +- 6 files changed, 32 insertions(+), 34 deletions(-) diff --git a/Deploy/dependenciesscanner.cpp b/Deploy/dependenciesscanner.cpp index 0a04e4d..e933145 100644 --- a/Deploy/dependenciesscanner.cpp +++ b/Deploy/dependenciesscanner.cpp @@ -75,28 +75,20 @@ bool DependenciesScanner::fillLibInfo(LibInfo &info, const QString &file) { void DependenciesScanner::recursiveDep(LibInfo &lib, QSet &res) { - bool isScaned = _scanedLibs.contains(lib.fullPath()); + if (_scanedLibs.contains(lib.fullPath())) { + auto scanedLib = _scanedLibs.value(lib.fullPath()); - for (auto i : lib.dependncies) { - - if (isScaned) { - auto scanedLib = _scanedLibs.value(i); - - if (!scanedLib.isValid()) { - qCritical() << "no valid lib in scaned libs list!"; - return; - } - - if (!scanedLib.isScaned()) { - qCritical() << "lib not scaned!"; - return; - } - - res.insert(scanedLib); - - continue; + if (!scanedLib.isValid()) { + qCritical() << "no valid lib in scaned libs list!"; + return; } + res.unite(scanedLib.allDep); + + return; + } + + for (auto i : lib.dependncies) { auto libs = getLibsFromEnvirement(i); @@ -111,14 +103,24 @@ void DependenciesScanner::recursiveDep(LibInfo &lib, QSet &res) while (dep != libs.end() && dep.value().platform != lib.platform) dep++; - if (dep != libs.end() && !res.contains(*dep)) { + if (dep != libs.end()) { + LibInfo scanedLib = _scanedLibs.value(dep->fullPath()); + + if (!scanedLib.isValid()) { + auto listDep = QSet(); + + recursiveDep(*dep, listDep); + + dep->allDep = listDep; + _scanedLibs.insert(dep->fullPath(), *dep); + + res.unite(listDep); + } else { + res.unite(scanedLib.allDep); + } res.insert(*dep); - recursiveDep(*dep, res); } } - - lib.allDep = res; - _scanedLibs.insert(lib.fullPath(), lib); } void DependenciesScanner::setEnvironment(const QStringList &env) { diff --git a/Deploy/elf.cpp b/Deploy/elf.cpp index ef7abbb..a4d42c2 100644 --- a/Deploy/elf.cpp +++ b/Deploy/elf.cpp @@ -24,8 +24,9 @@ bool ELF::getLibInfo(const QString &lib, LibInfo &info) { info.setName(QFileInfo(lib).fileName()); info.setPath(QFileInfo(lib).absolutePath()); - for (auto &i : reader.dependencies()) { - info.addDependncies(i); + auto dep = reader.dependencies(); + for (auto &i : dep) { + info.addDependncies(i.toUpper()); } return true; diff --git a/Deploy/libinfo.cpp b/Deploy/libinfo.cpp index aa5c282..c2e4ac6 100644 --- a/Deploy/libinfo.cpp +++ b/Deploy/libinfo.cpp @@ -89,10 +89,6 @@ bool LibInfo::isValid() const { name.size() && path.size(); } -bool LibInfo::isScaned() const { - return allDep.size(); -} - uint qHash(const LibInfo &info) { return qHash(info.fullPath()); } diff --git a/Deploy/libinfo.h b/Deploy/libinfo.h index 87632c4..e71d134 100644 --- a/Deploy/libinfo.h +++ b/Deploy/libinfo.h @@ -27,8 +27,6 @@ public: bool isValid() const; - bool isScaned() const; - friend class DependenciesScanner; const QSet& getAllDep() const; Platform getPlatform() const; diff --git a/Deploy/pe.cpp b/Deploy/pe.cpp index 6cb4f34..14e231e 100644 --- a/Deploy/pe.cpp +++ b/Deploy/pe.cpp @@ -64,7 +64,7 @@ bool PE::getLibInfo(const QString &lib, LibInfo &info) { } info.setName(QFileInfo(lib).fileName()); - info.setName(QFileInfo(lib).absolutePath()); + info.setPath(QFileInfo(lib).absolutePath()); if (!getDep(parsedPeLib->internal, info)) { return false; diff --git a/UnitTests/tst_deploytest.cpp b/UnitTests/tst_deploytest.cpp index bec94d6..a80bba9 100644 --- a/UnitTests/tst_deploytest.cpp +++ b/UnitTests/tst_deploytest.cpp @@ -388,7 +388,8 @@ void deploytest::testExtractLib() { QVERIFY(info.getPlatform() == platforms.value(lib)); for (auto &dep : deb.value(lib)) { - QVERIFY(info.getDependncies().contains(dep.toUpper())); + bool test = info.getDependncies().contains(dep.toUpper()); + QVERIFY(test); } }