aboutsummaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/auto/qml/qqmlecmascript/tst_qqmlecmascript.cpp63
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);
}