aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristian Kandeler <christian.kandeler@theqtcompany.com>2016-02-12 12:08:28 +0100
committerChristian Kandeler <christian.kandeler@theqtcompany.com>2016-02-12 12:13:22 +0000
commitbfaaba0422b9f3467c8f081b79026f6c2a970b28 (patch)
tree7d1ede0651170bc6ac99b1bb4bd65c70ae263add
parent258383fbf4c7aa4d0cb2051cd6f9dbfacf0630e3 (diff)
Fix change tracking bug related to group conditions.
When checking whether the build data is affected by a change to the files list, we must only consider files from enabled groups. Change-Id: I620ee6896ff7846782e072d2e18e2b487c85ea76 Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
-rw-r--r--src/lib/corelib/buildgraph/buildgraphloader.cpp4
-rw-r--r--tests/auto/blackbox/testdata/group-condition-change/group-condition-change.qbs27
-rw-r--r--tests/auto/blackbox/testdata/group-condition-change/input_kaputt.txt0
-rw-r--r--tests/auto/blackbox/tst_blackbox.cpp13
-rw-r--r--tests/auto/blackbox/tst_blackbox.h1
5 files changed, 43 insertions, 2 deletions
diff --git a/src/lib/corelib/buildgraph/buildgraphloader.cpp b/src/lib/corelib/buildgraph/buildgraphloader.cpp
index 2f94dace9..8fa5d1f8d 100644
--- a/src/lib/corelib/buildgraph/buildgraphloader.cpp
+++ b/src/lib/corelib/buildgraph/buildgraphloader.cpp
@@ -469,8 +469,8 @@ void BuildGraphLoader::checkAllProductsForChanges(const QList<ResolvedProductPtr
continue;
}
- if (!sourceArtifactSetsAreEqual(restoredProduct->allFiles(),
- newlyResolvedProduct->allFiles())) {
+ if (!sourceArtifactSetsAreEqual(restoredProduct->allEnabledFiles(),
+ newlyResolvedProduct->allEnabledFiles())) {
m_logger.qbsDebug() << "File list of product '" << restoredProduct->uniqueName()
<< "' was changed.";
if (!changedProducts.contains(restoredProduct))
diff --git a/tests/auto/blackbox/testdata/group-condition-change/group-condition-change.qbs b/tests/auto/blackbox/testdata/group-condition-change/group-condition-change.qbs
new file mode 100644
index 000000000..d8dccde39
--- /dev/null
+++ b/tests/auto/blackbox/testdata/group-condition-change/group-condition-change.qbs
@@ -0,0 +1,27 @@
+import qbs
+
+Project {
+ property bool kaputt: true
+ Product {
+ type: ["kaputt"]
+ Group {
+ name: "kaputt"
+ condition: project.kaputt
+ files: "input_kaputt.txt"
+ fileTags: "input.kaputt"
+ }
+ Rule {
+ inputs: "input.kaputt"
+ Artifact {
+ filePath: "output.kaputt"
+ fileTags: "kaputt"
+ }
+ prepare: {
+ var cmd = new Command("jibbetnich", [output.filePath]);
+ cmd.silent = true;
+ return cmd;
+ }
+ }
+ }
+}
+
diff --git a/tests/auto/blackbox/testdata/group-condition-change/input_kaputt.txt b/tests/auto/blackbox/testdata/group-condition-change/input_kaputt.txt
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/tests/auto/blackbox/testdata/group-condition-change/input_kaputt.txt
diff --git a/tests/auto/blackbox/tst_blackbox.cpp b/tests/auto/blackbox/tst_blackbox.cpp
index 17fa0ff4d..5d801dd86 100644
--- a/tests/auto/blackbox/tst_blackbox.cpp
+++ b/tests/auto/blackbox/tst_blackbox.cpp
@@ -861,6 +861,19 @@ void TestBlackbox::trackExternalProductChanges()
QCOMPARE(runQbs(params), 0);
}
+void TestBlackbox::trackGroupConditionChange()
+{
+ QbsRunParameters params;
+ params.expectFailure = true;
+ QDir::setCurrent(testDataDir + "/group-condition-change");
+ QVERIFY(runQbs(params) != 0);
+ QVERIFY(m_qbsStderr.contains("jibbetnich"));
+
+ params.arguments = QStringList("project.kaputt:false");
+ params.expectFailure = false;
+ QCOMPARE(runQbs(params), 0);
+}
+
void TestBlackbox::trackRemoveFile()
{
QProcess process;
diff --git a/tests/auto/blackbox/tst_blackbox.h b/tests/auto/blackbox/tst_blackbox.h
index 3c05e7d0a..8d575fdd5 100644
--- a/tests/auto/blackbox/tst_blackbox.h
+++ b/tests/auto/blackbox/tst_blackbox.h
@@ -174,6 +174,7 @@ private slots:
void trackAddMocInclude();
void trackAddProduct();
void trackExternalProductChanges();
+ void trackGroupConditionChange();
void trackRemoveFile();
void trackRemoveFileTag();
void trackRemoveProduct();