aboutsummaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/auto/api/tst_api.cpp11
-rw-r--r--tests/auto/blackbox/testdata/maximum-cxx-language-version/modules/newestmodule/newestmodule.qbs2
-rw-r--r--tests/auto/blackbox/testdata/providers-properties/module-providers/provider_a.qbs9
-rw-r--r--tests/auto/blackbox/testdata/providers-properties/module-providers/provider_b.qbs9
-rw-r--r--tests/auto/blackbox/testdata/providers-properties/providers-properties.qbs11
-rw-r--r--tests/auto/blackbox/testdata/qbs-module-providers-cli-override/module-providers/provider_a.qbs8
-rw-r--r--tests/auto/blackbox/testdata/qbs-module-providers-cli-override/module-providers/provider_b.qbs9
-rw-r--r--tests/auto/blackbox/testdata/qbs-module-providers-cli-override/qbs-module-providers-cli-override.qbs13
-rw-r--r--tests/auto/blackbox/testdata/qbs-module-providers-compatibility/module-providers/named_provider.qbs8
-rw-r--r--tests/auto/blackbox/testdata/qbs-module-providers-compatibility/module-providers/qbsmetatestmodule/provider.qbs8
-rw-r--r--tests/auto/blackbox/testdata/qbs-module-providers-compatibility/qbs-module-providers-compatibility.qbs7
-rw-r--r--tests/auto/blackbox/testdata/qbs-module-providers-helpers.js14
-rw-r--r--tests/auto/blackbox/testdata/qbs-module-providers/module-providers/provider_a.qbs8
-rw-r--r--tests/auto/blackbox/testdata/qbs-module-providers/module-providers/provider_b.qbs9
-rw-r--r--tests/auto/blackbox/testdata/qbs-module-providers/qbs-module-providers.qbs28
-rw-r--r--tests/auto/blackbox/tst_blackbox.cpp126
-rw-r--r--tests/auto/blackbox/tst_blackbox.h7
17 files changed, 279 insertions, 8 deletions
diff --git a/tests/auto/api/tst_api.cpp b/tests/auto/api/tst_api.cpp
index 99b5059a0..200239081 100644
--- a/tests/auto/api/tst_api.cpp
+++ b/tests/auto/api/tst_api.cpp
@@ -1615,12 +1615,11 @@ void TestApi::listBuildSystemFiles()
m_logSink, nullptr));
waitForFinished(job.get());
QVERIFY2(!job->error().hasError(), qPrintable(job->error().toString()));
- const auto buildSystemFiles = qbs::Internal::Set<QString>::fromStdSet(
- job->project().buildSystemFiles());
- QVERIFY(buildSystemFiles.contains(setupParams.projectFilePath()));
- QVERIFY(buildSystemFiles.contains(setupParams.buildRoot() + "/subproject2/subproject2.qbs"));
- QVERIFY(buildSystemFiles.contains(setupParams.buildRoot()
- + "/subproject2/subproject3/subproject3.qbs"));
+ const auto buildSystemFiles = job->project().buildSystemFiles();
+ QVERIFY(buildSystemFiles.count(setupParams.projectFilePath()));
+ QVERIFY(buildSystemFiles.count(setupParams.buildRoot() + "/subproject2/subproject2.qbs"));
+ QVERIFY(buildSystemFiles.count(setupParams.buildRoot()
+ + "/subproject2/subproject3/subproject3.qbs"));
}
void TestApi::localProfiles()
diff --git a/tests/auto/blackbox/testdata/maximum-cxx-language-version/modules/newestmodule/newestmodule.qbs b/tests/auto/blackbox/testdata/maximum-cxx-language-version/modules/newestmodule/newestmodule.qbs
index f99932b10..305cb29f1 100644
--- a/tests/auto/blackbox/testdata/maximum-cxx-language-version/modules/newestmodule/newestmodule.qbs
+++ b/tests/auto/blackbox/testdata/maximum-cxx-language-version/modules/newestmodule/newestmodule.qbs
@@ -1,4 +1,4 @@
Module {
Depends { name: "cpp" }
- cpp.cxxLanguageVersion: "c++17"
+ cpp.cxxLanguageVersion: "c++23"
}
diff --git a/tests/auto/blackbox/testdata/providers-properties/module-providers/provider_a.qbs b/tests/auto/blackbox/testdata/providers-properties/module-providers/provider_a.qbs
new file mode 100644
index 000000000..7985199c1
--- /dev/null
+++ b/tests/auto/blackbox/testdata/providers-properties/module-providers/provider_a.qbs
@@ -0,0 +1,9 @@
+import "../../qbs-module-providers-helpers.js" as Helpers
+
+ModuleProvider {
+ property string someProp: "provider_a"
+ relativeSearchPaths: {
+ Helpers.writeModule(outputBaseDir, "qbsmetatestmodule", someProp);
+ return "";
+ }
+}
diff --git a/tests/auto/blackbox/testdata/providers-properties/module-providers/provider_b.qbs b/tests/auto/blackbox/testdata/providers-properties/module-providers/provider_b.qbs
new file mode 100644
index 000000000..58042d8d3
--- /dev/null
+++ b/tests/auto/blackbox/testdata/providers-properties/module-providers/provider_b.qbs
@@ -0,0 +1,9 @@
+import "../../qbs-module-providers-helpers.js" as Helpers
+
+ModuleProvider {
+ property string someProp: "provider_b"
+ relativeSearchPaths: {
+ Helpers.writeModule(outputBaseDir, "qbsothermodule", someProp);
+ return "";
+ }
+}
diff --git a/tests/auto/blackbox/testdata/providers-properties/providers-properties.qbs b/tests/auto/blackbox/testdata/providers-properties/providers-properties.qbs
new file mode 100644
index 000000000..e29536c17
--- /dev/null
+++ b/tests/auto/blackbox/testdata/providers-properties/providers-properties.qbs
@@ -0,0 +1,11 @@
+Product {
+ qbsModuleProviders: ["provider_a", "provider_b"]
+ name: "p"
+ Depends { name: "qbsmetatestmodule" }
+ Depends { name: "qbsothermodule" }
+ moduleProviders.provider_a.someProp: "someValue"
+ property bool dummy: {
+ console.info("p.qbsmetatestmodule.prop: " + qbsmetatestmodule.prop);
+ console.info("p.qbsothermodule.prop: " + qbsothermodule.prop);
+ }
+}
diff --git a/tests/auto/blackbox/testdata/qbs-module-providers-cli-override/module-providers/provider_a.qbs b/tests/auto/blackbox/testdata/qbs-module-providers-cli-override/module-providers/provider_a.qbs
new file mode 100644
index 000000000..d34d1cac5
--- /dev/null
+++ b/tests/auto/blackbox/testdata/qbs-module-providers-cli-override/module-providers/provider_a.qbs
@@ -0,0 +1,8 @@
+import "../../qbs-module-providers-helpers.js" as Helpers
+
+ModuleProvider {
+ relativeSearchPaths: {
+ Helpers.writeModule(outputBaseDir, "qbsmetatestmodule", "from_provider_a");
+ return "";
+ }
+}
diff --git a/tests/auto/blackbox/testdata/qbs-module-providers-cli-override/module-providers/provider_b.qbs b/tests/auto/blackbox/testdata/qbs-module-providers-cli-override/module-providers/provider_b.qbs
new file mode 100644
index 000000000..767e30923
--- /dev/null
+++ b/tests/auto/blackbox/testdata/qbs-module-providers-cli-override/module-providers/provider_b.qbs
@@ -0,0 +1,9 @@
+import "../../qbs-module-providers-helpers.js" as Helpers
+
+ModuleProvider {
+ relativeSearchPaths: {
+ Helpers.writeModule(outputBaseDir, "qbsmetatestmodule", "from_provider_b");
+ Helpers.writeModule(outputBaseDir, "qbsothermodule", "from_provider_b");
+ return "";
+ }
+}
diff --git a/tests/auto/blackbox/testdata/qbs-module-providers-cli-override/qbs-module-providers-cli-override.qbs b/tests/auto/blackbox/testdata/qbs-module-providers-cli-override/qbs-module-providers-cli-override.qbs
new file mode 100644
index 000000000..6f94ab207
--- /dev/null
+++ b/tests/auto/blackbox/testdata/qbs-module-providers-cli-override/qbs-module-providers-cli-override.qbs
@@ -0,0 +1,13 @@
+Project {
+ name: "project"
+ Project {
+ name: "innerProject"
+ Product {
+ name: "product"
+ Depends { name: "qbsmetatestmodule"; required: false }
+ property bool dummy: {
+ console.info("qbsmetatestmodule.prop: " + qbsmetatestmodule.prop);
+ }
+ }
+ }
+}
diff --git a/tests/auto/blackbox/testdata/qbs-module-providers-compatibility/module-providers/named_provider.qbs b/tests/auto/blackbox/testdata/qbs-module-providers-compatibility/module-providers/named_provider.qbs
new file mode 100644
index 000000000..07114b5ef
--- /dev/null
+++ b/tests/auto/blackbox/testdata/qbs-module-providers-compatibility/module-providers/named_provider.qbs
@@ -0,0 +1,8 @@
+import "../../qbs-module-providers-helpers.js" as Helpers
+
+ModuleProvider {
+ relativeSearchPaths: {
+ Helpers.writeModule(outputBaseDir, "qbsmetatestmodule", "from_named_provider");
+ return "";
+ }
+}
diff --git a/tests/auto/blackbox/testdata/qbs-module-providers-compatibility/module-providers/qbsmetatestmodule/provider.qbs b/tests/auto/blackbox/testdata/qbs-module-providers-compatibility/module-providers/qbsmetatestmodule/provider.qbs
new file mode 100644
index 000000000..b04a52261
--- /dev/null
+++ b/tests/auto/blackbox/testdata/qbs-module-providers-compatibility/module-providers/qbsmetatestmodule/provider.qbs
@@ -0,0 +1,8 @@
+import "../../../qbs-module-providers-helpers.js" as Helpers
+
+ModuleProvider {
+ relativeSearchPaths: {
+ Helpers.writeModule(outputBaseDir, "qbsmetatestmodule", "from_scoped_provider");
+ return "";
+ }
+}
diff --git a/tests/auto/blackbox/testdata/qbs-module-providers-compatibility/qbs-module-providers-compatibility.qbs b/tests/auto/blackbox/testdata/qbs-module-providers-compatibility/qbs-module-providers-compatibility.qbs
new file mode 100644
index 000000000..7885b540a
--- /dev/null
+++ b/tests/auto/blackbox/testdata/qbs-module-providers-compatibility/qbs-module-providers-compatibility.qbs
@@ -0,0 +1,7 @@
+Product {
+ name: "p"
+ Depends { name: "qbsmetatestmodule" }
+ property bool dummy: {
+ console.info("qbsmetatestmodule.prop: " + qbsmetatestmodule.prop);
+ }
+}
diff --git a/tests/auto/blackbox/testdata/qbs-module-providers-helpers.js b/tests/auto/blackbox/testdata/qbs-module-providers-helpers.js
new file mode 100644
index 000000000..2a2acfdcb
--- /dev/null
+++ b/tests/auto/blackbox/testdata/qbs-module-providers-helpers.js
@@ -0,0 +1,14 @@
+var File = require("qbs.File");
+var FileInfo = require("qbs.FileInfo");
+var TextFile = require("qbs.TextFile");
+
+function writeModule(outputBaseDir, name, prop) {
+ console.info("Running setup script for " + name);
+ var moduleDir = FileInfo.joinPaths(outputBaseDir, "modules", name);
+ File.makePath(moduleDir);
+ var module = new TextFile(FileInfo.joinPaths(moduleDir, "module.qbs"), TextFile.WriteOnly);
+ module.writeLine("Module {");
+ module.writeLine(" property string prop: '" + prop + "'");
+ module.writeLine("}");
+ module.close();
+}
diff --git a/tests/auto/blackbox/testdata/qbs-module-providers/module-providers/provider_a.qbs b/tests/auto/blackbox/testdata/qbs-module-providers/module-providers/provider_a.qbs
new file mode 100644
index 000000000..d34d1cac5
--- /dev/null
+++ b/tests/auto/blackbox/testdata/qbs-module-providers/module-providers/provider_a.qbs
@@ -0,0 +1,8 @@
+import "../../qbs-module-providers-helpers.js" as Helpers
+
+ModuleProvider {
+ relativeSearchPaths: {
+ Helpers.writeModule(outputBaseDir, "qbsmetatestmodule", "from_provider_a");
+ return "";
+ }
+}
diff --git a/tests/auto/blackbox/testdata/qbs-module-providers/module-providers/provider_b.qbs b/tests/auto/blackbox/testdata/qbs-module-providers/module-providers/provider_b.qbs
new file mode 100644
index 000000000..767e30923
--- /dev/null
+++ b/tests/auto/blackbox/testdata/qbs-module-providers/module-providers/provider_b.qbs
@@ -0,0 +1,9 @@
+import "../../qbs-module-providers-helpers.js" as Helpers
+
+ModuleProvider {
+ relativeSearchPaths: {
+ Helpers.writeModule(outputBaseDir, "qbsmetatestmodule", "from_provider_b");
+ Helpers.writeModule(outputBaseDir, "qbsothermodule", "from_provider_b");
+ return "";
+ }
+}
diff --git a/tests/auto/blackbox/testdata/qbs-module-providers/qbs-module-providers.qbs b/tests/auto/blackbox/testdata/qbs-module-providers/qbs-module-providers.qbs
new file mode 100644
index 000000000..00776a62e
--- /dev/null
+++ b/tests/auto/blackbox/testdata/qbs-module-providers/qbs-module-providers.qbs
@@ -0,0 +1,28 @@
+Project {
+ qbsModuleProviders: "provider_a"
+ property stringList wantedProviders: qbsModuleProviders
+ name: "project"
+ Project {
+ name: "innerProject"
+ qbsModuleProviders: project.wantedProviders
+ Product {
+ name: "p1"
+ Depends { name: "qbsmetatestmodule" }
+ Depends { name: "qbsothermodule"; required: false }
+ property bool dummy: {
+ console.info("p1.qbsmetatestmodule.prop: " + qbsmetatestmodule.prop);
+ console.info("p1.qbsothermodule.prop: " + qbsothermodule.prop);
+ }
+ }
+ }
+
+ Product {
+ name: "p2"
+ Depends { name: "qbsmetatestmodule" }
+ Depends { name: "qbsothermodule"; required: false }
+ property bool dummy: {
+ console.info("p2.qbsmetatestmodule.prop: " + qbsmetatestmodule.prop);
+ console.info("p2.qbsothermodule.prop: " + qbsothermodule.prop);
+ }
+ }
+}
diff --git a/tests/auto/blackbox/tst_blackbox.cpp b/tests/auto/blackbox/tst_blackbox.cpp
index 1082ba595..75dec843b 100644
--- a/tests/auto/blackbox/tst_blackbox.cpp
+++ b/tests/auto/blackbox/tst_blackbox.cpp
@@ -5846,6 +5846,18 @@ void TestBlackbox::protobufLibraryInstall()
QFileInfo::exists(installRootInclude + "/hello/world.pb.h"));
}
+// Tests whether it is possible to set providers properties in a Product or from command-line
+void TestBlackbox::providersProperties()
+{
+ QDir::setCurrent(testDataDir + "/providers-properties");
+
+ QbsRunParameters params("build");
+ params.arguments = QStringList("moduleProviders.provider_b.someProp: \"otherValue\"");
+ QCOMPARE(runQbs(params), 0);
+ QVERIFY2(m_qbsStdout.contains("p.qbsmetatestmodule.prop: someValue"), m_qbsStdout);
+ QVERIFY2(m_qbsStdout.contains("p.qbsothermodule.prop: otherValue"), m_qbsStdout);
+}
+
void TestBlackbox::pseudoMultiplexing()
{
// This is "pseudo-multiplexing" on all platforms that initialize qbs.architectures
@@ -6019,6 +6031,118 @@ void TestBlackbox::qbsConfigAddProfile_data()
<< QString("Profile properties must be key/value pairs");
}
+// Tests whether it is possible to set qbsModuleProviders in Product and Project items
+// and that the order of providers results in correct priority
+void TestBlackbox::qbsModuleProviders()
+{
+ QFETCH(QStringList, arguments);
+ QFETCH(QString, firstProp);
+ QFETCH(QString, secondProp);
+
+ QDir::setCurrent(testDataDir + "/qbs-module-providers");
+
+ QbsRunParameters params("resolve");
+ params.arguments = arguments;
+ QCOMPARE(runQbs(params), 0);
+ QVERIFY2(m_qbsStdout.contains(("p1.qbsmetatestmodule.prop: " + firstProp).toUtf8()),
+ m_qbsStdout);
+ QVERIFY2(m_qbsStdout.contains(("p1.qbsothermodule.prop: " + secondProp).toUtf8()),
+ m_qbsStdout);
+ QVERIFY2(m_qbsStdout.contains(("p2.qbsmetatestmodule.prop: " + firstProp).toUtf8()),
+ m_qbsStdout);
+ QVERIFY2(m_qbsStdout.contains(("p2.qbsothermodule.prop: " + secondProp).toUtf8()),
+ m_qbsStdout);
+}
+
+void TestBlackbox::qbsModuleProviders_data()
+{
+ QTest::addColumn<QStringList>("arguments");
+ QTest::addColumn<QString>("firstProp");
+ QTest::addColumn<QString>("secondProp");
+
+ QTest::newRow("default") << QStringList() << "from_provider_a" << "undefined";
+ QTest::newRow("override")
+ << QStringList("projects.project.qbsModuleProviders:provider_b")
+ << "from_provider_b"
+ << "from_provider_b";
+ QTest::newRow("override list a")
+ << QStringList("projects.project.qbsModuleProviders:provider_a,provider_b")
+ << "from_provider_a"
+ << "from_provider_b";
+ QTest::newRow("override list b")
+ << QStringList("projects.project.qbsModuleProviders:provider_b,provider_a")
+ << "from_provider_b"
+ << "from_provider_b";
+}
+
+// Tests possible use-cases how to override providers from command-line
+void TestBlackbox::qbsModuleProvidersCliOverride()
+{
+ QFETCH(QStringList, arguments);
+ QFETCH(QString, propertyValue);
+
+ QDir::setCurrent(testDataDir + "/qbs-module-providers-cli-override");
+
+ QbsRunParameters params("resolve");
+ params.arguments = arguments;
+ QCOMPARE(runQbs(params), 0);
+ QVERIFY2(m_qbsStdout.contains(("qbsmetatestmodule.prop: " + propertyValue).toUtf8()),
+ m_qbsStdout);
+}
+
+void TestBlackbox::qbsModuleProvidersCliOverride_data()
+{
+ QTest::addColumn<QStringList>("arguments");
+ QTest::addColumn<QString>("propertyValue");
+
+ QTest::newRow("default") << QStringList() << "undefined";
+ QTest::newRow("project-wide")
+ << QStringList("project.qbsModuleProviders:provider_a")
+ << "from_provider_a";
+ QTest::newRow("concrete project")
+ << QStringList("projects.innerProject.qbsModuleProviders:provider_a")
+ << "from_provider_a";
+ QTest::newRow("concrete product")
+ << QStringList("products.product.qbsModuleProviders:provider_a")
+ << "from_provider_a";
+ QTest::newRow("concrete project override project-wide")
+ << QStringList({
+ "project.qbsModuleProviders:provider_a",
+ "projects.innerProject.qbsModuleProviders:provider_b"})
+ << "from_provider_b";
+ QTest::newRow("concrete product override project-wide")
+ << QStringList({
+ "project.qbsModuleProviders:provider_a",
+ "products.product.qbsModuleProviders:provider_b"})
+ << "from_provider_b";
+}
+
+// Tests whether scoped providers can be used as named, i.e. new provider machinery
+// is compatible with the old one
+void TestBlackbox::qbsModuleProvidersCompatibility()
+{
+ QFETCH(QStringList, arguments);
+ QFETCH(QString, propertyValue);
+
+ QDir::setCurrent(testDataDir + "/qbs-module-providers-compatibility");
+
+ QbsRunParameters params("resolve");
+ params.arguments = arguments;
+ QCOMPARE(runQbs(params), 0);
+ QVERIFY2(m_qbsStdout.contains(("qbsmetatestmodule.prop: " + propertyValue).toUtf8()),
+ m_qbsStdout);
+}
+
+void TestBlackbox::qbsModuleProvidersCompatibility_data()
+{
+ QTest::addColumn<QStringList>("arguments");
+ QTest::addColumn<QString>("propertyValue");
+
+ QTest::newRow("default") << QStringList() << "from_scoped_provider";
+ QTest::newRow("scoped by name") << QStringList("project.qbsModuleProviders:qbsmetatestmodule") << "from_scoped_provider";
+ QTest::newRow("named") << QStringList("project.qbsModuleProviders:named_provider") << "from_named_provider";
+}
+
static QJsonObject getNextSessionPacket(QProcess &session, QByteArray &data)
{
int totalSize = -1;
@@ -7706,7 +7830,7 @@ void TestBlackbox::maximumCxxLanguageVersion()
QCOMPARE(runQbs(QbsRunParameters("resolve",
QStringList("products.app.enableNewestModule:true"))), 0);
QCOMPARE(runQbs(QStringList({"--command-echo-mode", "command-line", "-n"})), 0);
- QVERIFY2(m_qbsStdout.contains("c++17") || m_qbsStdout.contains("c++1z")
+ QVERIFY2(m_qbsStdout.contains("c++23") || m_qbsStdout.contains("c++2b")
|| m_qbsStdout.contains("c++latest"), m_qbsStdout.constData());
QCOMPARE(runQbs(QbsRunParameters("resolve",
QStringList("products.app.enableNewestModule:false"))), 0);
diff --git a/tests/auto/blackbox/tst_blackbox.h b/tests/auto/blackbox/tst_blackbox.h
index 6395eb679..8728f2b10 100644
--- a/tests/auto/blackbox/tst_blackbox.h
+++ b/tests/auto/blackbox/tst_blackbox.h
@@ -254,10 +254,17 @@ private slots:
void protobuf_data();
void protobuf();
void protobufLibraryInstall();
+ void providersProperties();
void pseudoMultiplexing();
void qbsConfig();
void qbsConfigAddProfile();
void qbsConfigAddProfile_data();
+ void qbsModuleProviders();
+ void qbsModuleProviders_data();
+ void qbsModuleProvidersCliOverride();
+ void qbsModuleProvidersCliOverride_data();
+ void qbsModuleProvidersCompatibility();
+ void qbsModuleProvidersCompatibility_data();
void qbsSession();
void qbsVersion();
void qtBug51237();