From bd9f5be3341f0b1c4f0f96a9f6f129dfebac6d43 Mon Sep 17 00:00:00 2001 From: Christian Kandeler Date: Wed, 6 Jun 2018 14:01:26 +0200 Subject: 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 --- src/lib/corelib/buildgraph/inputartifactscanner.cpp | 2 ++ tests/auto/blackbox/testdata-qt/qrc/bla.cpp | 13 ++++++++++++- tests/auto/blackbox/testdata-qt/qrc/bla.qrc | 1 + tests/auto/blackbox/testdata-qt/qrc/subdir/dummy.txt | 0 tests/auto/blackbox/tst_blackboxqt.cpp | 9 +++++++-- 5 files changed, 22 insertions(+), 3 deletions(-) create mode 100644 tests/auto/blackbox/testdata-qt/qrc/subdir/dummy.txt 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 + 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 @@ stuff.txt + subdir/ 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 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() -- cgit v1.2.3