diff options
author | Chris Adams <christopher.adams@nokia.com> | 2011-05-20 15:47:46 +1000 |
---|---|---|
committer | Chris Adams <christopher.adams@nokia.com> | 2011-05-20 16:15:35 +1000 |
commit | 02659f97761629625b7fcf38e5e8e00b489aa8b6 (patch) | |
tree | ff85a812a6069b7821341f0afa5f6fa3212cfe13 /tests | |
parent | 221f7f3c81e233125f5dc3ce47ef0518fafea815 (diff) |
Fix implicit qmldir imports unit test
Previously, the tst_qdeclarativemoduleplugin::implicitQmldir() test
worked only under shadow-built Qt. Now it works under in-src build
as well.
Reviewed-by: Martin Jones
Change-Id: Ie1395a8b93aba6e02f00bb047169d76f05ec10d9
Diffstat (limited to 'tests')
3 files changed, 36 insertions, 38 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/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/tst_qdeclarativemoduleplugin.cpp b/tests/auto/declarative/qdeclarativemoduleplugin/tst_qdeclarativemoduleplugin.cpp index 06b65d3c6f..338a07fa64 100644 --- a/tests/auto/declarative/qdeclarativemoduleplugin/tst_qdeclarativemoduleplugin.cpp +++ b/tests/auto/declarative/qdeclarativemoduleplugin/tst_qdeclarativemoduleplugin.cpp @@ -71,6 +71,7 @@ private slots: void versionNotInstalled(); void versionNotInstalled_data(); void implicitQmldir(); + void implicitQmldir_data(); }; #ifdef Q_OS_SYMBIAN @@ -85,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(); \ @@ -100,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"); \ @@ -310,46 +313,37 @@ void tst_qdeclarativemoduleplugin::versionNotInstalled() // 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() { - QDeclarativeEngine engine; + QFETCH(QString, directory); + QFETCH(QString, file); + QFETCH(QString, errorFile); - QObject *obj = 0; - QList<QDeclarativeError> errors; - QString qmldirUrl; - QStringList expectedErrors; + 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); - // parsing qmldir succeeds, but plugin specified in the qmldir file doesn't exist - QDeclarativeComponent c(&engine, TEST_FILE("data/implicit1/temptest.qml")); - qmldirUrl = TEST_FILE("data/implicit1/qmldir").toString(); - errors = c.errors(); - QString moduleName = TEST_FILE("data/implicit1").toString().remove(0,7).replace(QLatin1String("/"), QLatin1String(".")); - expectedErrors << QString(QLatin1String(": module \"") + moduleName + QLatin1String("\" plugin \"AType\" not found")); - QVERIFY(errors.size() == expectedErrors.size()); - for (int i = 0; i < errors.size(); ++i) { - QString msg = qmldirUrl + expectedErrors.at(i); - QCOMPARE(errors.at(i).toString(), msg); // ensure that the expected message matches the real message. - } - QTest::ignoreMessage(QtWarningMsg, "QDeclarativeComponent: Component is not ready"); - obj = c.create(); - QVERIFY(!obj); - delete obj; + QDeclarativeEngine engine; + engine.addImportPath(importPath); - // parsing qmldir fails due to syntax errors etc. - QDeclarativeComponent c2(&engine, TEST_FILE("data/implicit2/temptest2.qml")); - qmldirUrl = TEST_FILE("data/implicit2/qmldir").toString(); - errors = c2.errors(); - expectedErrors = QStringList(); - expectedErrors << QLatin1String(":1:12: unexpected token"); - expectedErrors << QLatin1String(":1: expected '.'"); - expectedErrors << QLatin1String(":2:17: unexpected token"); - QVERIFY(errors.size() == expectedErrors.size()); - for (int i = 0; i < errors.size(); ++i) { - QString msg = qmldirUrl + expectedErrors.at(i); - QCOMPARE(errors.at(i).toString(), msg); // ensure that the expected message matches the real message. - } + QDeclarativeComponent component(&engine, testFileUrl); + QList<QDeclarativeError> errors = component.errors(); + VERIFY_ERRORS(errorFileName.toLatin1().constData()); QTest::ignoreMessage(QtWarningMsg, "QDeclarativeComponent: Component is not ready"); - obj = c2.create(); + QObject *obj = component.create(); QVERIFY(!obj); delete obj; } |