diff options
Diffstat (limited to 'tests/auto/qml')
3 files changed, 53 insertions, 6 deletions
diff --git a/tests/auto/qml/qqmlcomponent/data/componentUrlCanonicalization.4.qml b/tests/auto/qml/qqmlcomponent/data/componentUrlCanonicalization.4.qml new file mode 100644 index 0000000000..cddaf6480d --- /dev/null +++ b/tests/auto/qml/qqmlcomponent/data/componentUrlCanonicalization.4.qml @@ -0,0 +1,28 @@ +import QtQuick 2.0 +import "SpecificComponent" +import "./SpecificComponent" +import "././SpecificComponent" +import "./././SpecificComponent" +import "SpecificComponent/." +import "SpecificComponent/./" +import "SpecificComponent/./." +import "SpecificComponent/././" +import "SpecificComponent/././." +import "SpecificComponent/./././" +import "../data/SpecificComponent" +import "./../data/SpecificComponent" +import ".././data/SpecificComponent" +import "SpecificComponent/nonexistent/../." +import "SpecificComponent/nonexistent/.././" +import "SpecificComponent/nonexistent/./.." +import "SpecificComponent/nonexistent/./../" +import "SpecificComponent/nonexistent/nonexistent/../.." +import "SpecificComponent/nonexistent/nonexistent/../../" +import "SpecificComponent/nonexistent/nonexistent/nonexistent/../../.." +import "SpecificComponent/nonexistent/nonexistent/nonexistent/../../../" +import "SpecificComponent/.././SpecificComponent" +import "SpecificComponent/./../SpecificComponent" + +Item { + property bool success : true +} diff --git a/tests/auto/qml/qqmlcomponent/data/componentUrlCanonicalization.5.qml b/tests/auto/qml/qqmlcomponent/data/componentUrlCanonicalization.5.qml new file mode 100644 index 0000000000..66993ab56d --- /dev/null +++ b/tests/auto/qml/qqmlcomponent/data/componentUrlCanonicalization.5.qml @@ -0,0 +1,4 @@ +import "../../../../../../Invalid" + +Item { +} diff --git a/tests/auto/qml/qqmlcomponent/tst_qqmlcomponent.cpp b/tests/auto/qml/qqmlcomponent/tst_qqmlcomponent.cpp index eebb558bce..b534d0c788 100644 --- a/tests/auto/qml/qqmlcomponent/tst_qqmlcomponent.cpp +++ b/tests/auto/qml/qqmlcomponent/tst_qqmlcomponent.cpp @@ -323,10 +323,9 @@ void tst_qqmlcomponent::componentUrlCanonicalization() // load components via import QQmlEngine engine; QQmlComponent component(&engine, testFileUrl("componentUrlCanonicalization.qml")); - QObject *object = component.create(); + QScopedPointer<QObject> object(component.create()); QVERIFY(object != 0); QVERIFY(object->property("success").toBool()); - delete object; } { @@ -334,20 +333,36 @@ void tst_qqmlcomponent::componentUrlCanonicalization() // import of the other if it were not already loaded. QQmlEngine engine; QQmlComponent component(&engine, testFileUrl("componentUrlCanonicalization.2.qml")); - QObject *object = component.create(); + QScopedPointer<QObject> object(component.create()); QVERIFY(object != 0); QVERIFY(object->property("success").toBool()); - delete object; } { // load components with more deeply nested imports QQmlEngine engine; QQmlComponent component(&engine, testFileUrl("componentUrlCanonicalization.3.qml")); - QObject *object = component.create(); + QScopedPointer<QObject> object(component.create()); QVERIFY(object != 0); QVERIFY(object->property("success").toBool()); - delete object; + } + + { + // load components with unusually specified import paths + QQmlEngine engine; + QQmlComponent component(&engine, testFileUrl("componentUrlCanonicalization.4.qml")); + QScopedPointer<QObject> object(component.create()); + QVERIFY(object != 0); + QVERIFY(object->property("success").toBool()); + } + + { + // Do not crash with various nonsense import paths + QQmlEngine engine; + QQmlComponent component(&engine, testFileUrl("componentUrlCanonicalization.5.qml")); + QTest::ignoreMessage(QtWarningMsg, QLatin1String("QQmlComponent: Component is not ready").data()); + QScopedPointer<QObject> object(component.create()); + QVERIFY(object == 0); } } |