aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristian Kandeler <christian.kandeler@qt.io>2018-06-06 14:01:26 +0200
committerChristian Kandeler <christian.kandeler@qt.io>2018-06-08 13:00:35 +0000
commitbd9f5be3341f0b1c4f0f96a9f6f129dfebac6d43 (patch)
tree100f2ae12de2407b7b96cc3f4f771cac2a450f94
parent5f71b2220f9ff6838799c407972309bff1e8fc96 (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.cpp2
-rw-r--r--tests/auto/blackbox/testdata-qt/qrc/bla.cpp13
-rw-r--r--tests/auto/blackbox/testdata-qt/qrc/bla.qrc1
-rw-r--r--tests/auto/blackbox/testdata-qt/qrc/subdir/dummy.txt0
-rw-r--r--tests/auto/blackbox/tst_blackboxqt.cpp9
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()