diff options
author | Christian Kandeler <christian.kandeler@qt.io> | 2018-02-19 17:49:52 +0100 |
---|---|---|
committer | Christian Kandeler <christian.kandeler@qt.io> | 2018-02-21 09:17:15 +0000 |
commit | 9379e0eae0f05614313083c8b46b8dae6da8b230 (patch) | |
tree | 84726ab0e84b54f7eac73e4e3f84e2eb554e0864 /tests | |
parent | 32c82062f91cc77bbb2b502e50d72fa5978a281e (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.qbs | 6 | ||||
-rw-r--r-- | tests/auto/api/tst_api.cpp | 29 | ||||
-rw-r--r-- | tests/auto/api/tst_api.h | 1 |
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(); |