diff options
author | Christian Kandeler <christian.kandeler@qt.io> | 2018-06-06 14:01:26 +0200 |
---|---|---|
committer | Christian Kandeler <christian.kandeler@qt.io> | 2018-06-08 13:00:35 +0000 |
commit | bd9f5be3341f0b1c4f0f96a9f6f129dfebac6d43 (patch) | |
tree | 100f2ae12de2407b7b96cc3f4f771cac2a450f94 | |
parent | 5f71b2220f9ff6838799c407972309bff1e8fc96 (diff) |
Prevent adding empty file paths as dependencies
The input artifact scanner was missing a check, so empty paths could end
up in the list of file dependencies. As a result, the respective
artifact would get rebuilt every time.
Change-Id: I34e48776856224dc885f03d34d40cae88d7d5e4b
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
-rw-r--r-- | src/lib/corelib/buildgraph/inputartifactscanner.cpp | 2 | ||||
-rw-r--r-- | tests/auto/blackbox/testdata-qt/qrc/bla.cpp | 13 | ||||
-rw-r--r-- | tests/auto/blackbox/testdata-qt/qrc/bla.qrc | 1 | ||||
-rw-r--r-- | tests/auto/blackbox/testdata-qt/qrc/subdir/dummy.txt | 0 | ||||
-rw-r--r-- | tests/auto/blackbox/tst_blackboxqt.cpp | 9 |
5 files changed, 22 insertions, 3 deletions
diff --git a/src/lib/corelib/buildgraph/inputartifactscanner.cpp b/src/lib/corelib/buildgraph/inputartifactscanner.cpp index 644b95d79..d183b1879 100644 --- a/src/lib/corelib/buildgraph/inputartifactscanner.cpp +++ b/src/lib/corelib/buildgraph/inputartifactscanner.cpp @@ -255,6 +255,8 @@ void InputArtifactScanner::resolveScanResultDependencies(const Artifact *inputAr if (FileInfo::isAbsolute(dependencyFilePath)) { resolveDepencency(dependency, inputArtifact->product.get(), &resolvedDependency); + if (resolvedDependency.filePath.isEmpty()) + goto unresolved; goto resolved; } diff --git a/tests/auto/blackbox/testdata-qt/qrc/bla.cpp b/tests/auto/blackbox/testdata-qt/qrc/bla.cpp index e04f873a6..5375b33b6 100644 --- a/tests/auto/blackbox/testdata-qt/qrc/bla.cpp +++ b/tests/auto/blackbox/testdata-qt/qrc/bla.cpp @@ -26,8 +26,19 @@ ** ****************************************************************************/ +#include <QFileInfo> + int main() { - return 3; + QFileInfo f(":/stuff.txt"); + if (!f.exists()) + return 1; + if (!f.isFile()) + return 2; + QFileInfo d(":/subdir"); + if (!d.exists()) + return 3; + if (!d.isDir()) + return 4; } diff --git a/tests/auto/blackbox/testdata-qt/qrc/bla.qrc b/tests/auto/blackbox/testdata-qt/qrc/bla.qrc index 46c93847e..cad4c6cd3 100644 --- a/tests/auto/blackbox/testdata-qt/qrc/bla.qrc +++ b/tests/auto/blackbox/testdata-qt/qrc/bla.qrc @@ -1,5 +1,6 @@ <RCC> <qresource prefix="/"> <file>stuff.txt</file> + <file>subdir/</file> </qresource> </RCC> diff --git a/tests/auto/blackbox/testdata-qt/qrc/subdir/dummy.txt b/tests/auto/blackbox/testdata-qt/qrc/subdir/dummy.txt new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/tests/auto/blackbox/testdata-qt/qrc/subdir/dummy.txt diff --git a/tests/auto/blackbox/tst_blackboxqt.cpp b/tests/auto/blackbox/tst_blackboxqt.cpp index 03e52590b..46f9d2e21 100644 --- a/tests/auto/blackbox/tst_blackboxqt.cpp +++ b/tests/auto/blackbox/tst_blackboxqt.cpp @@ -365,7 +365,7 @@ void TestBlackboxQt::track_qobject_change() void TestBlackboxQt::track_qrc() { QDir::setCurrent(testDataDir + "/qrc"); - QCOMPARE(runQbs(), 0); + QCOMPARE(runQbs(QbsRunParameters("run")), 0); const QString fileName = relativeExecutableFilePath("i"); QVERIFY2(regularFileExists(fileName), qPrintable(fileName)); QDateTime dt = QFileInfo(fileName).lastModified(); @@ -377,9 +377,14 @@ void TestBlackboxQt::track_qrc() f.write("bla"); f.close(); } - QCOMPARE(runQbs(), 0); + QCOMPARE(runQbs(QbsRunParameters("run")), 0); QVERIFY(regularFileExists(fileName)); QVERIFY(dt < QFileInfo(fileName).lastModified()); + WAIT_FOR_NEW_TIMESTAMP(); + touch("i.qbs"); + QCOMPARE(runQbs(), 0); + QVERIFY2(m_qbsStdout.contains("Resolving"), m_qbsStdout.constData()); + QVERIFY2(!m_qbsStdout.contains("rcc"), m_qbsStdout.constData()); } void TestBlackboxQt::unmocable() |