aboutsummaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorChristian Kandeler <christian.kandeler@qt.io>2018-02-19 17:49:52 +0100
committerChristian Kandeler <christian.kandeler@qt.io>2018-02-21 09:17:15 +0000
commit9379e0eae0f05614313083c8b46b8dae6da8b230 (patch)
tree84726ab0e84b54f7eac73e4e3f84e2eb554e0864 /tests
parent32c82062f91cc77bbb2b502e50d72fa5978a281e (diff)
RunEnvironment: Add safety check for API mis-use
It makes no sense to try to run a disabled product. Task-number: QBS-1306 Change-Id: I07e36bc8f787d702ed9caa21972537e588db57e8 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io> Reviewed-by: Jake Petroules <jake.petroules@qt.io>
Diffstat (limited to 'tests')
-rw-r--r--tests/auto/api/testdata/run-disabled-product/run-disabled-product.qbs6
-rw-r--r--tests/auto/api/tst_api.cpp29
-rw-r--r--tests/auto/api/tst_api.h1
3 files changed, 36 insertions, 0 deletions
diff --git a/tests/auto/api/testdata/run-disabled-product/run-disabled-product.qbs b/tests/auto/api/testdata/run-disabled-product/run-disabled-product.qbs
new file mode 100644
index 000000000..7cdcf7db1
--- /dev/null
+++ b/tests/auto/api/testdata/run-disabled-product/run-disabled-product.qbs
@@ -0,0 +1,6 @@
+import qbs
+
+CppApplication {
+ name: "app"
+ condition: false
+}
diff --git a/tests/auto/api/tst_api.cpp b/tests/auto/api/tst_api.cpp
index 36ea39b97..d938065ee 100644
--- a/tests/auto/api/tst_api.cpp
+++ b/tests/auto/api/tst_api.cpp
@@ -2614,6 +2614,35 @@ void TestApi::ruleConflict()
&& errorString.contains("pch2.h"), qPrintable(errorString));
}
+void TestApi::runEnvForDisabledProduct()
+{
+ const qbs::SetupProjectParameters params
+ = defaultSetupParameters("run-disabled-product/run-disabled-product.qbs");
+ const std::unique_ptr<qbs::SetupProjectJob> setupJob(qbs::Project().setupProject(params,
+ m_logSink, 0));
+ QVERIFY(waitForFinished(setupJob.get()));
+ QVERIFY2(!setupJob->error().hasError(), qPrintable(setupJob->error().toString()));
+ const qbs::Project project = setupJob->project();
+ const std::unique_ptr<qbs::BuildJob> buildJob(project.buildAllProducts(qbs::BuildOptions()));
+ QVERIFY(waitForFinished(buildJob.get()));
+ QVERIFY2(!buildJob->error().hasError(), qPrintable(buildJob->error().toString()));
+ const qbs::ProjectData projectData = project.projectData();
+ const QList<qbs::ProductData> products = projectData.products();
+ QCOMPARE(products.size(), 1);
+ const qbs::ProductData product = products.front();
+ qbs::RunEnvironment runEnv = project.getRunEnvironment(
+ product, qbs::InstallOptions(), QProcessEnvironment(), QStringList(),
+ settings().get());
+ qbs::ErrorInfo runError;
+ const QProcessEnvironment env = runEnv.runEnvironment(&runError);
+ QVERIFY2(runError.toString().contains("Cannot run disabled product 'app'"),
+ qPrintable(runError.toString()));
+ runError.clear();
+ runEnv.runTarget(QString(), QStringList(), true, &runError);
+ QVERIFY2(runError.toString().contains("Cannot run disabled product 'app'"),
+ qPrintable(runError.toString()));
+}
+
void TestApi::softDependency()
{
const qbs::ErrorInfo errorInfo = doBuildProject("soft-dependency");
diff --git a/tests/auto/api/tst_api.h b/tests/auto/api/tst_api.h
index c0e392324..c8852acdf 100644
--- a/tests/auto/api/tst_api.h
+++ b/tests/auto/api/tst_api.h
@@ -134,6 +134,7 @@ private slots:
void resolveProjectDryRun_data();
void restoredWarnings();
void ruleConflict();
+ void runEnvForDisabledProduct();
void softDependency();
void sourceFileInBuildDir();
void subProjects();