diff options
5 files changed, 36 insertions, 0 deletions
diff --git a/src/lib/corelib/language/testdata/base-validate/base-validate.qbs b/src/lib/corelib/language/testdata/base-validate/base-validate.qbs new file mode 100644 index 000000000..b1b025f94 --- /dev/null +++ b/src/lib/corelib/language/testdata/base-validate/base-validate.qbs @@ -0,0 +1,5 @@ +import qbs + +Product { + Depends { name: "m" } +} diff --git a/src/lib/corelib/language/testdata/base-validate/modules/m/M.qbs b/src/lib/corelib/language/testdata/base-validate/modules/m/M.qbs new file mode 100644 index 000000000..9874fbd5d --- /dev/null +++ b/src/lib/corelib/language/testdata/base-validate/modules/m/M.qbs @@ -0,0 +1,6 @@ +import qbs + +Module { + condition: false + validate: true +} diff --git a/src/lib/corelib/language/testdata/base-validate/modules/m/m.qbs b/src/lib/corelib/language/testdata/base-validate/modules/m/m.qbs new file mode 100644 index 000000000..93ee8f3e1 --- /dev/null +++ b/src/lib/corelib/language/testdata/base-validate/modules/m/m.qbs @@ -0,0 +1,11 @@ +import qbs + +M { + condition: true + validate: { + var parentResult = base; + if (!parentResult) + throw "Parent failed"; + throw "Parent succeeded, child failed."; + } +} diff --git a/src/lib/corelib/language/tst_language.cpp b/src/lib/corelib/language/tst_language.cpp index 236d03e67..03ca80047 100644 --- a/src/lib/corelib/language/tst_language.cpp +++ b/src/lib/corelib/language/tst_language.cpp @@ -190,6 +190,19 @@ void TestLanguage::baseProperty() QCOMPARE(exceptionCaught, false); } +void TestLanguage::baseValidation() +{ + qbs::SetupProjectParameters params = defaultParameters; + params.setProjectFilePath(testProject("base-validate/base-validate.qbs")); + try { + project = loader->loadProject(params); + QVERIFY2(false, "exception expected"); + } catch (const qbs::ErrorInfo &e) { + QVERIFY2(e.toString().contains("Parent succeeded, child failed."), + qPrintable(e.toString())); + } +} + void TestLanguage::buildConfigStringListSyntax() { bool exceptionCaught = false; diff --git a/src/lib/corelib/language/tst_language.h b/src/lib/corelib/language/tst_language.h index c8d6e59f9..f03f4be7f 100644 --- a/src/lib/corelib/language/tst_language.h +++ b/src/lib/corelib/language/tst_language.h @@ -76,6 +76,7 @@ private slots: void cleanupTestCase(); void baseProperty(); + void baseValidation(); void buildConfigStringListSyntax(); void builtinFunctionInSearchPathsProperty(); void canonicalArchitecture(); |