aboutsummaryrefslogtreecommitdiffstats
path: root/tests/auto/api/tst_api.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tests/auto/api/tst_api.cpp')
-rw-r--r--tests/auto/api/tst_api.cpp30
1 files changed, 30 insertions, 0 deletions
diff --git a/tests/auto/api/tst_api.cpp b/tests/auto/api/tst_api.cpp
index de930a13d..e90237f40 100644
--- a/tests/auto/api/tst_api.cpp
+++ b/tests/auto/api/tst_api.cpp
@@ -32,6 +32,7 @@
#include "../shared.h"
+#include <api/runenvironment.h>
#include <qbs.h>
#include <tools/fileinfo.h>
#include <tools/hostosinfo.h>
@@ -828,6 +829,35 @@ void TestApi::enableAndDisableProduct()
QVERIFY(!bdr.descriptions.contains("compiling"));
}
+void TestApi::errorInSetupRunEnvironment()
+{
+ qbs::SetupProjectParameters setupParams
+ = defaultSetupParameters("error-in-setup-run-environment/"
+ "error-in-setup-run-environment.qbs");
+ QScopedPointer<qbs::SetupProjectJob> job(qbs::Project().setupProject(setupParams,
+ m_logSink, 0));
+ waitForFinished(job.data());
+ QVERIFY2(!job->error().hasError(), qPrintable(job->error().toString()));
+ const qbs::Project project = job->project();
+ QVERIFY(project.isValid());
+ QCOMPARE(project.projectData().products().count(), 1);
+ const qbs::ProductData product = project.projectData().products().first();
+
+ bool exceptionCaught = false;
+ try {
+ qbs::Settings settings((QString()));
+ qbs::RunEnvironment runEnv = project.getRunEnvironment(product, qbs::InstallOptions(),
+ QProcessEnvironment(), &settings);
+ qbs::ErrorInfo error;
+ const QProcessEnvironment env = runEnv.runEnvironment(&error);
+ QVERIFY(error.hasError());
+ QVERIFY(error.toString().contains("trallala"));
+ } catch (const qbs::ErrorInfo &e) {
+ exceptionCaught = true;
+ }
+ QVERIFY(!exceptionCaught);
+}
+
static qbs::ErrorInfo forceRuleEvaluation(const qbs::Project project)
{
qbs::BuildOptions buildOptions;