diff options
Diffstat (limited to 'tests/auto/declarative/qdeclarativemoduleplugin')
17 files changed, 91 insertions, 5 deletions
diff --git a/tests/auto/declarative/qdeclarativemoduleplugin/data/implicit1/implicitQmldir.errors.txt b/tests/auto/declarative/qdeclarativemoduleplugin/data/implicit1/implicitQmldir.errors.txt new file mode 100644 index 0000000000..ce3b796e16 --- /dev/null +++ b/tests/auto/declarative/qdeclarativemoduleplugin/data/implicit1/implicitQmldir.errors.txt @@ -0,0 +1 @@ +-1:-1:module "" plugin "AType" not found diff --git a/tests/auto/declarative/qdeclarativemoduleplugin/data/implicit1/qmldir b/tests/auto/declarative/qdeclarativemoduleplugin/data/implicit1/qmldir new file mode 100644 index 0000000000..7f5b3a362d --- /dev/null +++ b/tests/auto/declarative/qdeclarativemoduleplugin/data/implicit1/qmldir @@ -0,0 +1,2 @@ +plugin AType + diff --git a/tests/auto/declarative/qdeclarativemoduleplugin/data/implicit1/temptest.qml b/tests/auto/declarative/qdeclarativemoduleplugin/data/implicit1/temptest.qml new file mode 100644 index 0000000000..a45ac2dd8c --- /dev/null +++ b/tests/auto/declarative/qdeclarativemoduleplugin/data/implicit1/temptest.qml @@ -0,0 +1,14 @@ +import QtQuick 1.0 + +// this qml file uses a type which is meant to be defined +// in a plugin which is specified in the qmldir file. +// however, that plugin doesn't exist, so it cannot be +// loaded, and hence the AItem type will be an unknown type. + +Item { + id: root + + AItem { + id: unknown + } +} diff --git a/tests/auto/declarative/qdeclarativemoduleplugin/data/implicit2/Test.qml b/tests/auto/declarative/qdeclarativemoduleplugin/data/implicit2/Test.qml new file mode 100644 index 0000000000..83c65538ba --- /dev/null +++ b/tests/auto/declarative/qdeclarativemoduleplugin/data/implicit2/Test.qml @@ -0,0 +1,5 @@ +import QtQuick 1.0 + +Item { + id: moduleRoot +} diff --git a/tests/auto/declarative/qdeclarativemoduleplugin/data/implicit2/implicitQmldir.2.errors.txt b/tests/auto/declarative/qdeclarativemoduleplugin/data/implicit2/implicitQmldir.2.errors.txt new file mode 100644 index 0000000000..9cafb78740 --- /dev/null +++ b/tests/auto/declarative/qdeclarativemoduleplugin/data/implicit2/implicitQmldir.2.errors.txt @@ -0,0 +1,3 @@ +1:12:unexpected token +1:-1:expected '.' +2:17:unexpected token diff --git a/tests/auto/declarative/qdeclarativemoduleplugin/data/implicit2/qmldir b/tests/auto/declarative/qdeclarativemoduleplugin/data/implicit2/qmldir new file mode 100644 index 0000000000..7c4def92fc --- /dev/null +++ b/tests/auto/declarative/qdeclarativemoduleplugin/data/implicit2/qmldir @@ -0,0 +1,3 @@ +foo bar foo bar +internal foo bar foo +Test 1.0 Test.qml diff --git a/tests/auto/declarative/qdeclarativemoduleplugin/data/implicit2/temptest2.qml b/tests/auto/declarative/qdeclarativemoduleplugin/data/implicit2/temptest2.qml new file mode 100644 index 0000000000..3eb29f43da --- /dev/null +++ b/tests/auto/declarative/qdeclarativemoduleplugin/data/implicit2/temptest2.qml @@ -0,0 +1,8 @@ +import QtQuick 1.0 + +// the type loader will implicitly search "." for a qmldir +// and the qmldir has various syntax errors in it. + +Item { + id: root +} diff --git a/tests/auto/declarative/qdeclarativemoduleplugin/plugin.2.1/plugin.2.1.pro b/tests/auto/declarative/qdeclarativemoduleplugin/plugin.2.1/plugin.2.1.pro index 661675ae79..1c94420cb5 100644 --- a/tests/auto/declarative/qdeclarativemoduleplugin/plugin.2.1/plugin.2.1.pro +++ b/tests/auto/declarative/qdeclarativemoduleplugin/plugin.2.1/plugin.2.1.pro @@ -7,3 +7,4 @@ DESTDIR = ../imports/com/nokia/AutoTestQmlPluginType.2.1 symbian: { TARGET.EPOCALLOWDLLDATA=1 } +QT += core-private gui-private declarative-private diff --git a/tests/auto/declarative/qdeclarativemoduleplugin/plugin.2/plugin.2.pro b/tests/auto/declarative/qdeclarativemoduleplugin/plugin.2/plugin.2.pro index d2546429db..d4797a7ed8 100644 --- a/tests/auto/declarative/qdeclarativemoduleplugin/plugin.2/plugin.2.pro +++ b/tests/auto/declarative/qdeclarativemoduleplugin/plugin.2/plugin.2.pro @@ -7,3 +7,4 @@ DESTDIR = ../imports/com/nokia/AutoTestQmlPluginType.2 symbian: { TARGET.EPOCALLOWDLLDATA=1 } +QT += core-private gui-private declarative-private diff --git a/tests/auto/declarative/qdeclarativemoduleplugin/plugin/plugin.pro b/tests/auto/declarative/qdeclarativemoduleplugin/plugin/plugin.pro index 173a3026fb..2bf974a6cc 100644 --- a/tests/auto/declarative/qdeclarativemoduleplugin/plugin/plugin.pro +++ b/tests/auto/declarative/qdeclarativemoduleplugin/plugin/plugin.pro @@ -7,3 +7,4 @@ DESTDIR = ../imports/com/nokia/AutoTestQmlPluginType symbian: { TARGET.EPOCALLOWDLLDATA=1 } +QT += core-private gui-private declarative-private diff --git a/tests/auto/declarative/qdeclarativemoduleplugin/pluginMixed/pluginMixed.pro b/tests/auto/declarative/qdeclarativemoduleplugin/pluginMixed/pluginMixed.pro index 9766003e74..52cf49d28e 100644 --- a/tests/auto/declarative/qdeclarativemoduleplugin/pluginMixed/pluginMixed.pro +++ b/tests/auto/declarative/qdeclarativemoduleplugin/pluginMixed/pluginMixed.pro @@ -7,3 +7,4 @@ DESTDIR = ../imports/com/nokia/AutoTestQmlMixedPluginType symbian: { TARGET.EPOCALLOWDLLDATA=1 } +QT += core-private gui-private declarative-private diff --git a/tests/auto/declarative/qdeclarativemoduleplugin/pluginVersion/pluginVersion.pro b/tests/auto/declarative/qdeclarativemoduleplugin/pluginVersion/pluginVersion.pro index 70a38b9a7d..2c69f225be 100644 --- a/tests/auto/declarative/qdeclarativemoduleplugin/pluginVersion/pluginVersion.pro +++ b/tests/auto/declarative/qdeclarativemoduleplugin/pluginVersion/pluginVersion.pro @@ -7,3 +7,4 @@ DESTDIR = ../imports/com/nokia/AutoTestQmlVersionPluginType symbian: { TARGET.EPOCALLOWDLLDATA=1 } +QT += core-private gui-private declarative-private diff --git a/tests/auto/declarative/qdeclarativemoduleplugin/pluginWithQmlFile/pluginWithQmlFile.pro b/tests/auto/declarative/qdeclarativemoduleplugin/pluginWithQmlFile/pluginWithQmlFile.pro index aa9c95c483..b39f63ecbc 100644 --- a/tests/auto/declarative/qdeclarativemoduleplugin/pluginWithQmlFile/pluginWithQmlFile.pro +++ b/tests/auto/declarative/qdeclarativemoduleplugin/pluginWithQmlFile/pluginWithQmlFile.pro @@ -7,3 +7,4 @@ DESTDIR = ../imports/com/nokia/AutoTestPluginWithQmlFile symbian: { TARGET.EPOCALLOWDLLDATA=1 } +QT += core-private gui-private declarative-private diff --git a/tests/auto/declarative/qdeclarativemoduleplugin/pluginWrongCase/pluginWrongCase.pro b/tests/auto/declarative/qdeclarativemoduleplugin/pluginWrongCase/pluginWrongCase.pro index c7337ca07c..87cf7d61b5 100644 --- a/tests/auto/declarative/qdeclarativemoduleplugin/pluginWrongCase/pluginWrongCase.pro +++ b/tests/auto/declarative/qdeclarativemoduleplugin/pluginWrongCase/pluginWrongCase.pro @@ -8,3 +8,4 @@ DESTDIR = ../imports/com/nokia/WrongCase symbian: { TARGET.EPOCALLOWDLLDATA=1 } +QT += core-private gui-private declarative-private diff --git a/tests/auto/declarative/qdeclarativemoduleplugin/qdeclarativemoduleplugin.pro b/tests/auto/declarative/qdeclarativemoduleplugin/qdeclarativemoduleplugin.pro index 6e72d9833b..25c6c6ad56 100644 --- a/tests/auto/declarative/qdeclarativemoduleplugin/qdeclarativemoduleplugin.pro +++ b/tests/auto/declarative/qdeclarativemoduleplugin/qdeclarativemoduleplugin.pro @@ -6,3 +6,4 @@ SUBDIRS += tst_qdeclarativemoduleplugin.pro CONFIG += parallel_test +QT += core-private gui-private declarative-private diff --git a/tests/auto/declarative/qdeclarativemoduleplugin/tst_qdeclarativemoduleplugin.cpp b/tests/auto/declarative/qdeclarativemoduleplugin/tst_qdeclarativemoduleplugin.cpp index 2cc297171c..3b08229554 100644 --- a/tests/auto/declarative/qdeclarativemoduleplugin/tst_qdeclarativemoduleplugin.cpp +++ b/tests/auto/declarative/qdeclarativemoduleplugin/tst_qdeclarativemoduleplugin.cpp @@ -70,6 +70,8 @@ private slots: void remoteImportWithUnquotedUri(); void versionNotInstalled(); void versionNotInstalled_data(); + void implicitQmldir(); + void implicitQmldir_data(); }; #ifdef Q_OS_SYMBIAN @@ -84,7 +86,8 @@ private slots: QVERIFY(!component.isError()); \ QVERIFY(component.errors().isEmpty()); \ } else { \ - QFile file(QLatin1String("data/") + QLatin1String(errorfile)); \ + QString verify_errors_file_name = QLatin1String(SRCDIR) + QDir::separator() + QLatin1String("data") + QDir::separator() + QLatin1String(errorfile); \ + QFile file(verify_errors_file_name); \ QVERIFY(file.open(QIODevice::ReadOnly | QIODevice::Text)); \ QByteArray data = file.readAll(); \ file.close(); \ @@ -99,10 +102,11 @@ private slots: error.description().toUtf8(); \ actual << errorStr; \ } \ - if (qgetenv("DEBUG") != "" && expected != actual) \ - qWarning() << "Expected:" << expected << "Actual:" << actual; \ + if (qgetenv("DEBUG") != "" && expected != actual) { \ + qWarning() << "Expected:" << expected << "Actual:" << actual; \ + } \ if (qgetenv("QDECLARATIVELANGUAGE_UPDATEERRORS") != "" && expected != actual) {\ - QFile file(QLatin1String("data/") + QLatin1String(errorfile)); \ + QFile file(QLatin1String(SRCDIR) + QDir::separator() + QLatin1String("data") + QDir::separator() + QLatin1String(errorfile)); \ QVERIFY(file.open(QIODevice::WriteOnly)); \ for (int ii = 0; ii < actual.count(); ++ii) { \ file.write(actual.at(ii)); file.write("\n"); \ @@ -119,7 +123,6 @@ inline QUrl TEST_FILE(const QString &filename) return QUrl::fromLocalFile(fileInfo.absoluteDir().filePath(filename)); } - void tst_qdeclarativemoduleplugin::importsPlugin() { QDeclarativeEngine engine; @@ -308,6 +311,44 @@ void tst_qdeclarativemoduleplugin::versionNotInstalled() VERIFY_ERRORS(errorFile.toLatin1().constData()); } + +// test that errors are reporting correctly for plugin loading and qmldir parsing +void tst_qdeclarativemoduleplugin::implicitQmldir_data() +{ + QTest::addColumn<QString>("directory"); + QTest::addColumn<QString>("file"); + QTest::addColumn<QString>("errorFile"); + + // parsing qmldir succeeds, but plugin specified in the qmldir file doesn't exist + QTest::newRow("implicitQmldir") << "implicit1" << "temptest.qml" << "implicitQmldir.errors.txt"; + + // parsing qmldir fails due to syntax errors, etc. + QTest::newRow("implicitQmldir2") << "implicit2" << "temptest2.qml" << "implicitQmldir.2.errors.txt"; +} +void tst_qdeclarativemoduleplugin::implicitQmldir() +{ + QFETCH(QString, directory); + QFETCH(QString, file); + QFETCH(QString, errorFile); + + QString importPath = QLatin1String(SRCDIR) + QDir::separator() + QLatin1String("data") + QDir::separator() + directory; + QString fileName = QLatin1String("data") + QDir::separator() + directory + QDir::separator() + file; + QString errorFileName = directory + QDir::separator() + errorFile; + QUrl testFileUrl = TEST_FILE(fileName); + + QDeclarativeEngine engine; + engine.addImportPath(importPath); + + QDeclarativeComponent component(&engine, testFileUrl); + QList<QDeclarativeError> errors = component.errors(); + VERIFY_ERRORS(errorFileName.toLatin1().constData()); + QTest::ignoreMessage(QtWarningMsg, "QDeclarativeComponent: Component is not ready"); + QObject *obj = component.create(); + QVERIFY(!obj); + delete obj; +} + + QTEST_MAIN(tst_qdeclarativemoduleplugin) #include "tst_qdeclarativemoduleplugin.moc" diff --git a/tests/auto/declarative/qdeclarativemoduleplugin/tst_qdeclarativemoduleplugin.pro b/tests/auto/declarative/qdeclarativemoduleplugin/tst_qdeclarativemoduleplugin.pro index 98cd4729c7..b22162676c 100644 --- a/tests/auto/declarative/qdeclarativemoduleplugin/tst_qdeclarativemoduleplugin.pro +++ b/tests/auto/declarative/qdeclarativemoduleplugin/tst_qdeclarativemoduleplugin.pro @@ -13,3 +13,4 @@ symbian: { } else { DEFINES += SRCDIR=\\\"$$PWD\\\" } +QT += core-private gui-private declarative-private |