summaryrefslogtreecommitdiffstats
path: root/tests/auto/xmlpatternsvalidator
diff options
context:
space:
mode:
authorPeter Hartmann <peter.hartmann@nokia.com>2010-03-16 14:01:17 +0100
committerPeter Hartmann <peter.hartmann@nokia.com>2010-04-26 19:26:45 +0200
commit5b086892cec1cbcd9fe7f0abca5293519ecc4633 (patch)
treee7b395eb4160b0eefd49041a34b1fdd79f83ad4c /tests/auto/xmlpatternsvalidator
parentc3067851071ae9480688e0d746dd6b03bd113823 (diff)
QXmlSchema internals: fix crash with anonymous types
The crash occurred when an anonymous type was created that was a list type. In that case, we did not set the item type, which is used later at XsdSchemaChecker::checkSimpleDerivationRestrictions(), which would lead to a crash. Additionally, in the xmlpatternsvalidator test, check the exit status of the process after it has finished, to detect crashes. Reviewed-by: Tobias Koenig <tokoe@kde.org> Reviewed-by: Frans Englich Task-number: QTBUG-8920
Diffstat (limited to 'tests/auto/xmlpatternsvalidator')
-rw-r--r--tests/auto/xmlpatternsvalidator/files/complex-type-including-anonymous-type.xsd24
-rw-r--r--tests/auto/xmlpatternsvalidator/tst_xmlpatternsvalidator.cpp13
2 files changed, 33 insertions, 4 deletions
diff --git a/tests/auto/xmlpatternsvalidator/files/complex-type-including-anonymous-type.xsd b/tests/auto/xmlpatternsvalidator/files/complex-type-including-anonymous-type.xsd
new file mode 100644
index 0000000000..da765b471a
--- /dev/null
+++ b/tests/auto/xmlpatternsvalidator/files/complex-type-including-anonymous-type.xsd
@@ -0,0 +1,24 @@
+<schema targetNamespace="http://qt.nokia.com/test"
+ xmlns:gml="http://qt.nokia.com/test"
+ xmlns="http://www.w3.org/2001/XMLSchema">
+
+ <!-- ============= This is an excerpt from GML (http://www.opengis.net/gml)
+ which used to produce a crash in QXmlSchema ========== -->
+
+ <simpleType name="doubleList">
+ <list itemType="double"/>
+ </simpleType>
+
+ <complexType name="DirectPositionType">
+ <simpleContent>
+ <extension base="gml:doubleList"/>
+ </simpleContent>
+ </complexType>
+
+ <complexType name="VectorType">
+ <simpleContent>
+ <restriction base="gml:DirectPositionType"/>
+ </simpleContent>
+ </complexType>
+
+</schema>
diff --git a/tests/auto/xmlpatternsvalidator/tst_xmlpatternsvalidator.cpp b/tests/auto/xmlpatternsvalidator/tst_xmlpatternsvalidator.cpp
index 7aab47f4ea..3517b5a426 100644
--- a/tests/auto/xmlpatternsvalidator/tst_xmlpatternsvalidator.cpp
+++ b/tests/auto/xmlpatternsvalidator/tst_xmlpatternsvalidator.cpp
@@ -111,8 +111,8 @@ void tst_XmlPatternsValidator::xsdSupport()
process.start(m_command, arguments);
- QCOMPARE(process.exitStatus(), QProcess::NormalExit);
QVERIFY(process.waitForFinished());
+ QCOMPARE(process.exitStatus(), QProcess::NormalExit);
if(process.exitCode() != expectedExitCode)
QTextStream(stderr) << "foo:" << process.readAllStandardError();
@@ -197,20 +197,25 @@ void tst_XmlPatternsValidator::xsdSupport_data() const
<< (QStringList() << QLatin1String("files/instance.xml"))
<< QString();
- QTest::newRow("A schema with an indirectly included type")
+ QTest::newRow("QTBUG-8394 A schema with an indirectly included type")
<< 0
<< (QStringList() << QLatin1String("files/indirect-include-a.xsd"))
<< QString();
- QTest::newRow("A schema with an indirectly imported type")
+ QTest::newRow("QTBUG-8394 A schema with an indirectly imported type")
<< 0
<< (QStringList() << QLatin1String("files/indirect-import-a.xsd"))
<< QString();
- QTest::newRow("A schema with an indirectly redefined type")
+ QTest::newRow("QTBUG-8394 A schema with an indirectly redefined type")
<< 0
<< (QStringList() << QLatin1String("files/indirect-redefine-a.xsd"))
<< QString();
+
+ QTest::newRow("QTBUG-8920 A schema with a complex type that indirectly includes an anonymous type")
+ << 0
+ << (QStringList() << QLatin1String("files/complex-type-including-anonymous-type.xsd"))
+ << QString();
}
QTEST_MAIN(tst_XmlPatternsValidator)