diff options
Diffstat (limited to 'tests')
-rw-r--r-- | tests/auto/qml/qqmlecmascript/tst_qqmlecmascript.cpp | 63 |
1 files changed, 42 insertions, 21 deletions
diff --git a/tests/auto/qml/qqmlecmascript/tst_qqmlecmascript.cpp b/tests/auto/qml/qqmlecmascript/tst_qqmlecmascript.cpp index 0ea6a25afb..5f923c7a21 100644 --- a/tests/auto/qml/qqmlecmascript/tst_qqmlecmascript.cpp +++ b/tests/auto/qml/qqmlecmascript/tst_qqmlecmascript.cpp @@ -3932,6 +3932,7 @@ void tst_qqmlecmascript::verifyContextLifetime(QQmlContextData *ctxt) { void tst_qqmlecmascript::importScripts_data() { QTest::addColumn<QUrl>("testfile"); + QTest::addColumn<bool>("compilationShouldSucceed"); QTest::addColumn<QString>("errorMessage"); QTest::addColumn<QStringList>("warningMessages"); QTest::addColumn<QStringList>("propertyNames"); @@ -3939,6 +3940,7 @@ void tst_qqmlecmascript::importScripts_data() QTest::newRow("basic functionality") << testFileUrl("jsimport/testImport.qml") + << true /* compilation should succeed */ << QString() << QStringList() << (QStringList() << QLatin1String("importedScriptStringValue") @@ -3952,6 +3954,7 @@ void tst_qqmlecmascript::importScripts_data() QTest::newRow("import scoping") << testFileUrl("jsimport/testImportScoping.qml") + << true /* compilation should succeed */ << QString() << QStringList() << (QStringList() << QLatin1String("componentError")) @@ -3959,6 +3962,7 @@ void tst_qqmlecmascript::importScripts_data() QTest::newRow("parent scope shouldn't be inherited by import with imports") << testFileUrl("jsimportfail/failOne.qml") + << true /* compilation should succeed */ << QString() << (QStringList() << QString(testFileUrl("jsimportfail/failOne.qml").toString() + QLatin1String(":6: TypeError: Cannot call method 'greetingString' of undefined"))) << (QStringList() << QLatin1String("importScriptFunctionValue")) @@ -3966,6 +3970,7 @@ void tst_qqmlecmascript::importScripts_data() QTest::newRow("javascript imports in an import should be private to the import scope") << testFileUrl("jsimportfail/failTwo.qml") + << true /* compilation should succeed */ << QString() << (QStringList() << QString(testFileUrl("jsimportfail/failTwo.qml").toString() + QLatin1String(":6: ReferenceError: ImportOneJs is not defined"))) << (QStringList() << QLatin1String("importScriptFunctionValue")) @@ -3973,6 +3978,7 @@ void tst_qqmlecmascript::importScripts_data() QTest::newRow("module imports in an import should be private to the import scope") << testFileUrl("jsimportfail/failThree.qml") + << true /* compilation should succeed */ << QString() << (QStringList() << QString(testFileUrl("jsimportfail/failThree.qml").toString() + QLatin1String(":7: TypeError: Cannot read property 'JsQtTest' of undefined"))) << (QStringList() << QLatin1String("importedModuleAttachedPropertyValue")) @@ -3980,6 +3986,7 @@ void tst_qqmlecmascript::importScripts_data() QTest::newRow("typenames in an import should be private to the import scope") << testFileUrl("jsimportfail/failFour.qml") + << true /* compilation should succeed */ << QString() << (QStringList() << QString(testFileUrl("jsimportfail/failFour.qml").toString() + QLatin1String(":6: ReferenceError: JsQtTest is not defined"))) << (QStringList() << QLatin1String("importedModuleEnumValue")) @@ -3987,6 +3994,7 @@ void tst_qqmlecmascript::importScripts_data() QTest::newRow("import with imports has it's own activation scope") << testFileUrl("jsimportfail/failFive.qml") + << true /* compilation should succeed */ << QString() << (QStringList() << QString(testFileUrl("jsimportfail/importWithImports.js").toString() + QLatin1String(":8: ReferenceError: Component is not defined"))) << (QStringList() << QLatin1String("componentError")) @@ -3994,6 +4002,7 @@ void tst_qqmlecmascript::importScripts_data() QTest::newRow("import pragma library script") << testFileUrl("jsimport/testImportPragmaLibrary.qml") + << true /* compilation should succeed */ << QString() << QStringList() << (QStringList() << QLatin1String("testValue")) @@ -4001,6 +4010,7 @@ void tst_qqmlecmascript::importScripts_data() QTest::newRow("pragma library imports shouldn't inherit parent imports or scope") << testFileUrl("jsimportfail/testImportPragmaLibrary.qml") + << true /* compilation should succeed */ << QString() << (QStringList() << QString(testFileUrl("jsimportfail/importPragmaLibrary.js").toString() + QLatin1String(":6: ReferenceError: Component is not defined"))) << (QStringList() << QLatin1String("testValue")) @@ -4008,6 +4018,7 @@ void tst_qqmlecmascript::importScripts_data() QTest::newRow("import pragma library script which has an import") << testFileUrl("jsimport/testImportPragmaLibraryWithImports.qml") + << true /* compilation should succeed */ << QString() << QStringList() << (QStringList() << QLatin1String("testValue")) @@ -4015,6 +4026,7 @@ void tst_qqmlecmascript::importScripts_data() QTest::newRow("import pragma library script which has a pragma library import") << testFileUrl("jsimport/testImportPragmaLibraryWithPragmaLibraryImports.qml") + << true /* compilation should succeed */ << QString() << QStringList() << (QStringList() << QLatin1String("testValue")) @@ -4022,6 +4034,7 @@ void tst_qqmlecmascript::importScripts_data() QTest::newRow("import singleton type into js import") << testFileUrl("jsimport/testImportSingletonType.qml") + << true /* compilation should succeed */ << QString() << QStringList() << (QStringList() << QLatin1String("testValue")) @@ -4029,6 +4042,7 @@ void tst_qqmlecmascript::importScripts_data() QTest::newRow("import module which exports a script") << testFileUrl("jsimport/testJsImport.qml") + << true /* compilation should succeed */ << QString() << QStringList() << (QStringList() << QLatin1String("importedScriptStringValue") @@ -4040,6 +4054,7 @@ void tst_qqmlecmascript::importScripts_data() QTest::newRow("import module which exports a script which imports a remote module") << testFileUrl("jsimport/testJsRemoteImport.qml") + << true /* compilation should succeed */ << QString() << QStringList() << (QStringList() << QLatin1String("importedScriptStringValue") @@ -4051,6 +4066,7 @@ void tst_qqmlecmascript::importScripts_data() QTest::newRow("malformed import statement") << testFileUrl("jsimportfail/malformedImport.qml") + << false /* compilation should succeed */ << QString() << (QStringList() << testFileUrl("jsimportfail/malformedImport.js").toString() + QLatin1String(":1:1: Syntax error")) << QStringList() @@ -4058,6 +4074,7 @@ void tst_qqmlecmascript::importScripts_data() QTest::newRow("malformed file name") << testFileUrl("jsimportfail/malformedFile.qml") + << false /* compilation should succeed */ << QString() << (QStringList() << testFileUrl("jsimportfail/malformedFile.js").toString() + QLatin1String(":1:9: Imported file must be a script")) << QStringList() @@ -4065,6 +4082,7 @@ void tst_qqmlecmascript::importScripts_data() QTest::newRow("missing file qualifier") << testFileUrl("jsimportfail/missingFileQualifier.qml") + << false /* compilation should succeed */ << QString() << (QStringList() << testFileUrl("jsimportfail/missingFileQualifier.js").toString() + QLatin1String(":1:1: File import requires a qualifier")) << QStringList() @@ -4072,6 +4090,7 @@ void tst_qqmlecmascript::importScripts_data() QTest::newRow("malformed file qualifier") << testFileUrl("jsimportfail/malformedFileQualifier.qml") + << false /* compilation should succeed */ << QString() << (QStringList() << testFileUrl("jsimportfail/malformedFileQualifier.js").toString() + QLatin1String(":1:20: File import requires a qualifier")) << QStringList() @@ -4079,6 +4098,7 @@ void tst_qqmlecmascript::importScripts_data() QTest::newRow("malformed module qualifier 2") << testFileUrl("jsimportfail/malformedFileQualifier.2.qml") + << false /* compilation should succeed */ << QString() << (QStringList() << testFileUrl("jsimportfail/malformedFileQualifier.2.js").toString() + QLatin1String(":1:1: Invalid import qualifier")) << QStringList() @@ -4086,6 +4106,7 @@ void tst_qqmlecmascript::importScripts_data() QTest::newRow("malformed module uri") << testFileUrl("jsimportfail/malformedModule.qml") + << false /* compilation should succeed */ << QString() << (QStringList() << testFileUrl("jsimportfail/malformedModule.js").toString() + QLatin1String(":1:17: Invalid module URI")) << QStringList() @@ -4093,6 +4114,7 @@ void tst_qqmlecmascript::importScripts_data() QTest::newRow("missing module version") << testFileUrl("jsimportfail/missingModuleVersion.qml") + << false /* compilation should succeed */ << QString() << (QStringList() << testFileUrl("jsimportfail/missingModuleVersion.js").toString() + QLatin1String(":1:17: Module import requires a version")) << QStringList() @@ -4100,6 +4122,7 @@ void tst_qqmlecmascript::importScripts_data() QTest::newRow("malformed module version") << testFileUrl("jsimportfail/malformedModuleVersion.qml") + << false /* compilation should succeed */ << QString() << (QStringList() << testFileUrl("jsimportfail/malformedModuleVersion.js").toString() + QLatin1String(":1:17: Module import requires a version")) << QStringList() @@ -4107,6 +4130,7 @@ void tst_qqmlecmascript::importScripts_data() QTest::newRow("missing module qualifier") << testFileUrl("jsimportfail/missingModuleQualifier.qml") + << false /* compilation should succeed */ << QString() << (QStringList() << testFileUrl("jsimportfail/missingModuleQualifier.js").toString() + QLatin1String(":1:1: Module import requires a qualifier")) << QStringList() @@ -4114,6 +4138,7 @@ void tst_qqmlecmascript::importScripts_data() QTest::newRow("malformed module qualifier") << testFileUrl("jsimportfail/malformedModuleQualifier.qml") + << false /* compilation should succeed */ << QString() << (QStringList() << testFileUrl("jsimportfail/malformedModuleQualifier.js").toString() + QLatin1String(":1:21: Module import requires a qualifier")) << QStringList() @@ -4121,6 +4146,7 @@ void tst_qqmlecmascript::importScripts_data() QTest::newRow("malformed module qualifier 2") << testFileUrl("jsimportfail/malformedModuleQualifier.2.qml") + << false /* compilation should succeed */ << QString() << (QStringList() << testFileUrl("jsimportfail/malformedModuleQualifier.2.js").toString() + QLatin1String(":1:1: Invalid import qualifier")) << QStringList() @@ -4130,8 +4156,9 @@ void tst_qqmlecmascript::importScripts_data() void tst_qqmlecmascript::importScripts() { QFETCH(QUrl, testfile); + QFETCH(bool, compilationShouldSucceed); QFETCH(QString, errorMessage); - QFETCH(QStringList, warningMessages); + QFETCH(QStringList, warningMessages); // error messages if !compilationShouldSucceed QFETCH(QStringList, propertyNames); QFETCH(QVariantList, propertyValues); @@ -4149,11 +4176,19 @@ void tst_qqmlecmascript::importScripts() if (!errorMessage.isEmpty()) QTest::ignoreMessage(QtWarningMsg, errorMessage.toLatin1().constData()); - if (warningMessages.size()) + if (compilationShouldSucceed && warningMessages.size()) foreach (const QString &warning, warningMessages) QTest::ignoreMessage(QtWarningMsg, warning.toLatin1().constData()); - QTRY_VERIFY(component.isReady()); + if (compilationShouldSucceed) + QTRY_VERIFY(component.isReady()); + else { + QVERIFY(component.isError()); + QCOMPARE(warningMessages.size(), 1); + QCOMPARE(component.errors().count(), 2); + QCOMPARE(component.errors().at(1).toString(), warningMessages.first()); + return; + } QObject *object = component.create(); if (!errorMessage.isEmpty()) { @@ -6653,26 +6688,12 @@ void tst_qqmlecmascript::qtbug_22843() fileName += QLatin1String(".qml"); QQmlComponent component(&engine, testFileUrl(fileName)); + QString url = component.url().toString(); - QString warning1 = url.left(url.length()-3) + QLatin1String("js:4:16: Expected token `;'"); - QString warning2 = url + QLatin1String(":5: TypeError: Cannot call method 'func' of undefined"); + QString expectedError = url.left(url.length()-3) + QLatin1String("js:4:16: Expected token `;'"); - qRegisterMetaType<QList<QQmlError> >("QList<QQmlError>"); - QSignalSpy warningsSpy(&engine, SIGNAL(warnings(QList<QQmlError>))); - for (int x = 0; x < 3; ++x) { - warningsSpy.clear(); - // For libraries, only the first import attempt should produce a - // SyntaxError warning; subsequent component creation should not - // attempt to reload the script. - bool expectSyntaxError = !library || (x == 0); - if (expectSyntaxError) - QTest::ignoreMessage(QtWarningMsg, qPrintable(warning1)); - QTest::ignoreMessage(QtWarningMsg, qPrintable(warning2)); - QObject *object = component.create(); - QVERIFY(object != 0); - QCOMPARE(warningsSpy.count(), 1 + (expectSyntaxError?1:0)); - delete object; - } + QVERIFY(component.isError()); + QCOMPARE(component.errors().value(1).toString(), expectedError); } |