From 8022fd9a5c43daf16f5409a9a6b14f4ac762763b Mon Sep 17 00:00:00 2001 From: Christian Kandeler Date: Thu, 9 Nov 2017 11:45:02 +0100 Subject: Consider imported files when tracking changes to Probe.configure Change-Id: Iafe068bffd926642ad0f07160e13b0ab5715a0db Reviewed-by: Jake Petroules --- .../import-change-tracking-product.qbs | 21 +++++++++++ .../testdata/import-change-tracking/probe1.js | 3 ++ .../testdata/import-change-tracking/probe2.js | 1 + tests/auto/blackbox/tst_blackbox.cpp | 41 ++++++++++++++++++++++ 4 files changed, 66 insertions(+) create mode 100644 tests/auto/blackbox/testdata/import-change-tracking/probe1.js create mode 100644 tests/auto/blackbox/testdata/import-change-tracking/probe2.js (limited to 'tests') diff --git a/tests/auto/blackbox/testdata/import-change-tracking/import-change-tracking-product.qbs b/tests/auto/blackbox/testdata/import-change-tracking/import-change-tracking-product.qbs index f7e9bc5de..c229de889 100644 --- a/tests/auto/blackbox/testdata/import-change-tracking/import-change-tracking-product.qbs +++ b/tests/auto/blackbox/testdata/import-change-tracking/import-change-tracking-product.qbs @@ -2,12 +2,14 @@ import qbs import "irrelevant.js" as Irrelevant import "custom1prepare1.js" as Custom1Prepare import "custom2prepare" as Custom2Prepare +import "probe1.js" as ProbeFunc Product { name: "customProduct" type: ["custom1", "custom2"] property string irrelevant: Irrelevant.irrelevant() + property string dummy: probe1.result Group { files: "input1.txt" @@ -34,4 +36,23 @@ Product { return Custom2Prepare.prepare(); } } + + Probe { + id: probe1 + property string input: Irrelevant.irrelevant() + property string result + configure: { + found = true; + console.info("running probe1"); + return ProbeFunc.probe1Func(); + } + } + + Probe { + id: probe2 + configure: { + console.info("running probe2"); + found = true; + } + } } diff --git a/tests/auto/blackbox/testdata/import-change-tracking/probe1.js b/tests/auto/blackbox/testdata/import-change-tracking/probe1.js new file mode 100644 index 000000000..f9cb64dd0 --- /dev/null +++ b/tests/auto/blackbox/testdata/import-change-tracking/probe1.js @@ -0,0 +1,3 @@ +var Probe2 = require("./probe2.js") + +function probe1Func() { return Probe2.probe2Func(); } diff --git a/tests/auto/blackbox/testdata/import-change-tracking/probe2.js b/tests/auto/blackbox/testdata/import-change-tracking/probe2.js new file mode 100644 index 000000000..563ba6b93 --- /dev/null +++ b/tests/auto/blackbox/testdata/import-change-tracking/probe2.js @@ -0,0 +1 @@ +function probe2Func() { return "probeData"; } diff --git a/tests/auto/blackbox/tst_blackbox.cpp b/tests/auto/blackbox/tst_blackbox.cpp index 15440f838..8f5f73dc6 100644 --- a/tests/auto/blackbox/tst_blackbox.cpp +++ b/tests/auto/blackbox/tst_blackbox.cpp @@ -5539,6 +5539,8 @@ void TestBlackbox::importChangeTracking() QDir::setCurrent(testDataDir + "/import-change-tracking"); QCOMPARE(runQbs(QStringList({"-f", "import-change-tracking.qbs"})), 0); QVERIFY2(m_qbsStdout.contains("Resolving"), m_qbsStdout.constData()); + QVERIFY2(m_qbsStdout.contains("running probe1"), m_qbsStdout.constData()); + QVERIFY2(m_qbsStdout.contains("running probe2"), m_qbsStdout.constData()); QVERIFY2(m_qbsStdout.contains("running custom1 prepare script"), m_qbsStdout.constData()); QVERIFY2(m_qbsStdout.contains("running custom2 prepare script"), m_qbsStdout.constData()); QVERIFY2(m_qbsStdout.contains("running custom1 command"), m_qbsStdout.constData()); @@ -5549,6 +5551,8 @@ void TestBlackbox::importChangeTracking() touch("irrelevant.js"); QCOMPARE(runQbs(), 0); QVERIFY2(m_qbsStdout.contains("Resolving"), m_qbsStdout.constData()); + QVERIFY2(!m_qbsStdout.contains("running probe1 "), m_qbsStdout.constData()); + QVERIFY2(!m_qbsStdout.contains("running probe2"), m_qbsStdout.constData()); QVERIFY2(!m_qbsStdout.contains("running custom1 prepare script"), m_qbsStdout.constData()); QVERIFY2(!m_qbsStdout.contains("running custom2 prepare script"), m_qbsStdout.constData()); QVERIFY2(!m_qbsStdout.contains("running custom1 command"), m_qbsStdout.constData()); @@ -5559,6 +5563,8 @@ void TestBlackbox::importChangeTracking() touch("custom1prepare1.js"); QCOMPARE(runQbs(), 0); QVERIFY2(m_qbsStdout.contains("Resolving"), m_qbsStdout.constData()); + QVERIFY2(!m_qbsStdout.contains("running probe1 "), m_qbsStdout.constData()); + QVERIFY2(!m_qbsStdout.contains("running probe2"), m_qbsStdout.constData()); QVERIFY2(m_qbsStdout.contains("running custom1 prepare script"), m_qbsStdout.constData()); QVERIFY2(!m_qbsStdout.contains("running custom1 command"), m_qbsStdout.constData()); QVERIFY2(!m_qbsStdout.contains("running custom2 command"), m_qbsStdout.constData()); @@ -5568,6 +5574,8 @@ void TestBlackbox::importChangeTracking() touch("custom1prepare2.js"); QCOMPARE(runQbs(), 0); QVERIFY2(m_qbsStdout.contains("Resolving"), m_qbsStdout.constData()); + QVERIFY2(!m_qbsStdout.contains("running probe1 "), m_qbsStdout.constData()); + QVERIFY2(!m_qbsStdout.contains("running probe2"), m_qbsStdout.constData()); QVERIFY2(m_qbsStdout.contains("running custom1 prepare script"), m_qbsStdout.constData()); QVERIFY2(!m_qbsStdout.contains("running custom1 command"), m_qbsStdout.constData()); QVERIFY2(!m_qbsStdout.contains("running custom2 command"), m_qbsStdout.constData()); @@ -5577,6 +5585,8 @@ void TestBlackbox::importChangeTracking() touch("custom1command.js"); QCOMPARE(runQbs(), 0); QVERIFY2(m_qbsStdout.contains("Resolving"), m_qbsStdout.constData()); + QVERIFY2(!m_qbsStdout.contains("running probe1 "), m_qbsStdout.constData()); + QVERIFY2(!m_qbsStdout.contains("running probe2"), m_qbsStdout.constData()); QVERIFY2(m_qbsStdout.contains("running custom1 command"), m_qbsStdout.constData()); QVERIFY2(!m_qbsStdout.contains("running custom2 command"), m_qbsStdout.constData()); @@ -5585,6 +5595,8 @@ void TestBlackbox::importChangeTracking() touch("custom2prepare/custom2prepare2.js"); QCOMPARE(runQbs(), 0); QVERIFY2(m_qbsStdout.contains("Resolving"), m_qbsStdout.constData()); + QVERIFY2(!m_qbsStdout.contains("running probe1 "), m_qbsStdout.constData()); + QVERIFY2(!m_qbsStdout.contains("running probe2"), m_qbsStdout.constData()); QVERIFY2(m_qbsStdout.contains("running custom2 prepare script"), m_qbsStdout.constData()); QVERIFY2(!m_qbsStdout.contains("running custom1 command"), m_qbsStdout.constData()); QVERIFY2(!m_qbsStdout.contains("running custom2 command"), m_qbsStdout.constData()); @@ -5594,9 +5606,35 @@ void TestBlackbox::importChangeTracking() touch("imports/custom2command/custom2command1.js"); QCOMPARE(runQbs(), 0); QVERIFY2(m_qbsStdout.contains("Resolving"), m_qbsStdout.constData()); + QVERIFY2(!m_qbsStdout.contains("running probe1 "), m_qbsStdout.constData()); + QVERIFY2(!m_qbsStdout.contains("running probe2"), m_qbsStdout.constData()); QVERIFY2(!m_qbsStdout.contains("running custom1 command"), m_qbsStdout.constData()); QVERIFY2(m_qbsStdout.contains("running custom2 command"), m_qbsStdout.constData()); + // Change in directly imported file only used by one Probe + WAIT_FOR_NEW_TIMESTAMP(); + touch("probe1.js"); + QCOMPARE(runQbs(), 0); + QVERIFY2(m_qbsStdout.contains("Resolving"), m_qbsStdout.constData()); + QVERIFY2(m_qbsStdout.contains("running probe1"), m_qbsStdout.constData()); + QVERIFY2(!m_qbsStdout.contains("running probe2"), m_qbsStdout.constData()); + QVERIFY2(!m_qbsStdout.contains("running custom1 prepare script"), m_qbsStdout.constData()); + QVERIFY2(!m_qbsStdout.contains("running custom2 prepare script"), m_qbsStdout.constData()); + QVERIFY2(!m_qbsStdout.contains("running custom1 command"), m_qbsStdout.constData()); + QVERIFY2(!m_qbsStdout.contains("running custom2 command"), m_qbsStdout.constData()); + + // Change in indirectly imported file only used by one Probe + WAIT_FOR_NEW_TIMESTAMP(); + touch("probe2.js"); + QCOMPARE(runQbs(), 0); + QVERIFY2(m_qbsStdout.contains("Resolving"), m_qbsStdout.constData()); + QVERIFY2(m_qbsStdout.contains("running probe1"), m_qbsStdout.constData()); + QVERIFY2(!m_qbsStdout.contains("running probe2"), m_qbsStdout.constData()); + QVERIFY2(!m_qbsStdout.contains("running custom1 prepare script"), m_qbsStdout.constData()); + QVERIFY2(!m_qbsStdout.contains("running custom2 prepare script"), m_qbsStdout.constData()); + QVERIFY2(!m_qbsStdout.contains("running custom1 command"), m_qbsStdout.constData()); + QVERIFY2(!m_qbsStdout.contains("running custom2 command"), m_qbsStdout.constData()); + // Change everything at once. WAIT_FOR_NEW_TIMESTAMP(); touch("irrelevant.js"); @@ -5605,8 +5643,11 @@ void TestBlackbox::importChangeTracking() touch("custom1command.js"); touch("custom2prepare/custom2prepare1.js"); touch("imports/custom2command/custom2command2.js"); + touch("probe2.js"); QCOMPARE(runQbs(), 0); QVERIFY2(m_qbsStdout.contains("Resolving"), m_qbsStdout.constData()); + QVERIFY2(m_qbsStdout.contains("running probe1"), m_qbsStdout.constData()); + QVERIFY2(!m_qbsStdout.contains("running probe2"), m_qbsStdout.constData()); QVERIFY2(m_qbsStdout.contains("running custom1 prepare script"), m_qbsStdout.constData()); QVERIFY2(m_qbsStdout.contains("running custom2 prepare script"), m_qbsStdout.constData()); QVERIFY2(m_qbsStdout.contains("running custom1 command"), m_qbsStdout.constData()); -- cgit v1.2.3