aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristian Kandeler <christian.kandeler@qt.io>2016-11-23 14:50:35 +0100
committerChristian Kandeler <christian.kandeler@qt.io>2016-11-23 16:54:44 +0000
commit0e304181dd94064b355c3dcbc82f557db8653a81 (patch)
tree761f119a92289f2677fa686bf52540fd34868c5a
parent0ab562cae6fd6b5c334714efad5eb5a2882ef2ab (diff)
Add autotest for calling a base item's validate script
Because why not. Task-number: QBS-979 Change-Id: I6fce703e59b7806f634d749dbc90b8d28536d4de Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
-rw-r--r--src/lib/corelib/language/testdata/base-validate/base-validate.qbs5
-rw-r--r--src/lib/corelib/language/testdata/base-validate/modules/m/M.qbs6
-rw-r--r--src/lib/corelib/language/testdata/base-validate/modules/m/m.qbs11
-rw-r--r--src/lib/corelib/language/tst_language.cpp13
-rw-r--r--src/lib/corelib/language/tst_language.h1
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();