aboutsummaryrefslogtreecommitdiffstats
path: root/tests/auto/blackbox/tst_blackbox.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tests/auto/blackbox/tst_blackbox.cpp')
-rw-r--r--tests/auto/blackbox/tst_blackbox.cpp66
1 files changed, 66 insertions, 0 deletions
diff --git a/tests/auto/blackbox/tst_blackbox.cpp b/tests/auto/blackbox/tst_blackbox.cpp
index 41ce32e40..9022bd975 100644
--- a/tests/auto/blackbox/tst_blackbox.cpp
+++ b/tests/auto/blackbox/tst_blackbox.cpp
@@ -716,6 +716,35 @@ void TestBlackbox::changedFiles()
QVERIFY2(m_qbsStdout.contains("file1.cpp"), m_qbsStdout.constData());
}
+void TestBlackbox::changedRuleInputs()
+{
+ QDir::setCurrent(testDataDir + "/changed-rule-inputs");
+
+ // Initial build.
+ QCOMPARE(runQbs(), 0);
+ QVERIFY2(m_qbsStdout.contains("generating p1-dummy"), m_qbsStdout.constData());
+ QVERIFY2(m_qbsStdout.contains("generating p2-dummy"), m_qbsStdout.constData());
+
+ // Re-build: p1 is always regenerated, and p2 has a dependency on it.
+ QCOMPARE(runQbs(), 0);
+ QVERIFY2(m_qbsStdout.contains("generating p1-dummy"), m_qbsStdout.constData());
+ QVERIFY2(m_qbsStdout.contains("generating p2-dummy"), m_qbsStdout.constData());
+
+ // Remove the dependency. p2 gets re-generated one last time, because its set of
+ // inputs changed.
+ WAIT_FOR_NEW_TIMESTAMP();
+ REPLACE_IN_FILE("changed-rule-inputs.qbs", "inputsFromDependencies: \"p1\"",
+ "inputsFromDependencies: \"p3\"");
+ QCOMPARE(runQbs(), 0);
+ QVERIFY2(m_qbsStdout.contains("generating p1-dummy"), m_qbsStdout.constData());
+ QVERIFY2(m_qbsStdout.contains("generating p2-dummy"), m_qbsStdout.constData());
+
+ // Now the artifacts are no longer connected, and p2 must not get rebuilt anymore.
+ QCOMPARE(runQbs(), 0);
+ QVERIFY2(m_qbsStdout.contains("generating p1-dummy"), m_qbsStdout.constData());
+ QVERIFY2(!m_qbsStdout.contains("generating p2-dummy"), m_qbsStdout.constData());
+}
+
void TestBlackbox::changeInDisabledProduct()
{
QDir::setCurrent(testDataDir + "/change-in-disabled-product");
@@ -2750,6 +2779,19 @@ void TestBlackbox::probeProperties()
QVERIFY2(m_qbsStdout.contains("probe2.filePath=" + dir + "/bin/tool"), m_qbsStdout.constData());
}
+void TestBlackbox::probesAndShadowProducts()
+{
+ QDir::setCurrent(testDataDir + "/probes-and-shadow-products");
+ QCOMPARE(runQbs(QStringList("--log-time")), 0);
+ QVERIFY2(m_qbsStdout.contains("2 probes encountered, 1 configure scripts executed"),
+ m_qbsStdout.constData());
+ WAIT_FOR_NEW_TIMESTAMP();
+ touch("probes-and-shadow-products.qbs");
+ QCOMPARE(runQbs(QStringList("--log-time")), 0);
+ QVERIFY2(m_qbsStdout.contains("2 probes encountered, 0 configure scripts executed"),
+ m_qbsStdout.constData());
+}
+
void TestBlackbox::probeInExportedModule()
{
QDir::setCurrent(testDataDir + "/probe-in-exported-module");
@@ -3330,6 +3372,22 @@ void TestBlackbox::exportToOutsideSearchPath()
m_qbsStderr.constData());
}
+void TestBlackbox::exportsPkgconfig()
+{
+ QDir::setCurrent(testDataDir + "/exports-pkgconfig");
+ QCOMPARE(runQbs(), 0);
+ QFile sourcePcFile(HostOsInfo::isWindowsHost() ? "TheFirstLib_windows.pc" : "TheFirstLib.pc");
+ QString generatedPcFilePath = relativeProductBuildDir("TheFirstLib") + "/TheFirstLib.pc";
+ QFile generatedPcFile(generatedPcFilePath);
+ QVERIFY2(sourcePcFile.open(QIODevice::ReadOnly), qPrintable(sourcePcFile.errorString()));
+ QVERIFY2(generatedPcFile.open(QIODevice::ReadOnly), qPrintable(generatedPcFile.errorString()));
+ QCOMPARE(generatedPcFile.readAll().replace("\r", ""), sourcePcFile.readAll().replace("\r", ""));
+ sourcePcFile.close();
+ generatedPcFile.close();
+ TEXT_FILE_COMPARE(relativeProductBuildDir("TheSecondLib") + "/TheSecondLib.pc",
+ "TheSecondLib.pc");
+}
+
void TestBlackbox::exportsQbs()
{
QDir::setCurrent(testDataDir + "/exports-qbs");
@@ -6260,6 +6318,14 @@ void TestBlackbox::ico()
}
}
+void TestBlackbox::importAssignment()
+{
+ QDir::setCurrent(testDataDir + "/import-assignment");
+ QCOMPARE(runQbs(QStringList("project.qbsSearchPaths:" + QDir::currentPath())), 0);
+ QVERIFY2(m_qbsStdout.contains("key 1 = value1") && m_qbsStdout.contains("key 2 = value2"),
+ m_qbsStdout.constData());
+}
+
void TestBlackbox::importChangeTracking()
{
QDir::setCurrent(testDataDir + "/import-change-tracking");