diff options
author | Matthew Vogt <matthew.vogt@nokia.com> | 2012-07-06 13:04:53 +1000 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-07-11 01:49:59 +0200 |
commit | a1a2c81d7fd5512b8c0531b01453656fc4c96bed (patch) | |
tree | 519b6c02482c3487d64a060041e95ae09a878c49 /tests/auto/qml/qqmlecmascript | |
parent | f5cb65b35e076facbce45e896902a34da7036135 (diff) |
Improved error messages for malformed .import statements
Report errors in .import statements, rather than pass them through
to V8 to yield 'Syntax error'.
Task-number: QTBUG-24867
Change-Id: I111b3bd3d198e97f42b29591f61753e86295aeb2
Reviewed-by: Glenn Watson <glenn.watson@nokia.com>
Diffstat (limited to 'tests/auto/qml/qqmlecmascript')
23 files changed, 165 insertions, 0 deletions
diff --git a/tests/auto/qml/qqmlecmascript/data/jsimportfail/malformedFile.js b/tests/auto/qml/qqmlecmascript/data/jsimportfail/malformedFile.js new file mode 100644 index 0000000000..cd06f25ac3 --- /dev/null +++ b/tests/auto/qml/qqmlecmascript/data/jsimportfail/malformedFile.js @@ -0,0 +1,3 @@ +.import "other.qml" as Other + +function foo() { return 'bar' } diff --git a/tests/auto/qml/qqmlecmascript/data/jsimportfail/malformedFile.qml b/tests/auto/qml/qqmlecmascript/data/jsimportfail/malformedFile.qml new file mode 100644 index 0000000000..d9ccc4277f --- /dev/null +++ b/tests/auto/qml/qqmlecmascript/data/jsimportfail/malformedFile.qml @@ -0,0 +1,5 @@ +import QtQuick 2.0 +import "malformedFile.js" as JS + +Item { +} diff --git a/tests/auto/qml/qqmlecmascript/data/jsimportfail/malformedFileQualifier.2.js b/tests/auto/qml/qqmlecmascript/data/jsimportfail/malformedFileQualifier.2.js new file mode 100644 index 0000000000..96ec83666b --- /dev/null +++ b/tests/auto/qml/qqmlecmascript/data/jsimportfail/malformedFileQualifier.2.js @@ -0,0 +1,3 @@ +.import "other.js" as other + +function foo() { return 'bar' } diff --git a/tests/auto/qml/qqmlecmascript/data/jsimportfail/malformedFileQualifier.2.qml b/tests/auto/qml/qqmlecmascript/data/jsimportfail/malformedFileQualifier.2.qml new file mode 100644 index 0000000000..88c3af7675 --- /dev/null +++ b/tests/auto/qml/qqmlecmascript/data/jsimportfail/malformedFileQualifier.2.qml @@ -0,0 +1,5 @@ +import QtQuick 2.0 +import "malformedFileQualifier.2.js" as JS + +Item { +} diff --git a/tests/auto/qml/qqmlecmascript/data/jsimportfail/malformedFileQualifier.js b/tests/auto/qml/qqmlecmascript/data/jsimportfail/malformedFileQualifier.js new file mode 100644 index 0000000000..2eb7afc664 --- /dev/null +++ b/tests/auto/qml/qqmlecmascript/data/jsimportfail/malformedFileQualifier.js @@ -0,0 +1,3 @@ +.import "other.js" Other + +function foo() { return 'bar' } diff --git a/tests/auto/qml/qqmlecmascript/data/jsimportfail/malformedFileQualifier.qml b/tests/auto/qml/qqmlecmascript/data/jsimportfail/malformedFileQualifier.qml new file mode 100644 index 0000000000..928e883df8 --- /dev/null +++ b/tests/auto/qml/qqmlecmascript/data/jsimportfail/malformedFileQualifier.qml @@ -0,0 +1,5 @@ +import QtQuick 2.0 +import "malformedFileQualifier.js" as JS + +Item { +} diff --git a/tests/auto/qml/qqmlecmascript/data/jsimportfail/malformedImport.js b/tests/auto/qml/qqmlecmascript/data/jsimportfail/malformedImport.js new file mode 100644 index 0000000000..c56c82226c --- /dev/null +++ b/tests/auto/qml/qqmlecmascript/data/jsimportfail/malformedImport.js @@ -0,0 +1,3 @@ +.impooooort QtQuick 2.0 as QQ + +function foo() { return 'bar' } diff --git a/tests/auto/qml/qqmlecmascript/data/jsimportfail/malformedImport.qml b/tests/auto/qml/qqmlecmascript/data/jsimportfail/malformedImport.qml new file mode 100644 index 0000000000..84f62a3536 --- /dev/null +++ b/tests/auto/qml/qqmlecmascript/data/jsimportfail/malformedImport.qml @@ -0,0 +1,5 @@ +import QtQuick 2.0 +import "malformedImport.js" as JS + +Item { +} diff --git a/tests/auto/qml/qqmlecmascript/data/jsimportfail/malformedModule.js b/tests/auto/qml/qqmlecmascript/data/jsimportfail/malformedModule.js new file mode 100644 index 0000000000..6affc4e93e --- /dev/null +++ b/tests/auto/qml/qqmlecmascript/data/jsimportfail/malformedModule.js @@ -0,0 +1,3 @@ +.import QtQuick.++ 2.0 as QQ + +function foo() { return 'bar' } diff --git a/tests/auto/qml/qqmlecmascript/data/jsimportfail/malformedModule.qml b/tests/auto/qml/qqmlecmascript/data/jsimportfail/malformedModule.qml new file mode 100644 index 0000000000..1170594e79 --- /dev/null +++ b/tests/auto/qml/qqmlecmascript/data/jsimportfail/malformedModule.qml @@ -0,0 +1,5 @@ +import QtQuick 2.0 +import "malformedModule.js" as JS + +Item { +} diff --git a/tests/auto/qml/qqmlecmascript/data/jsimportfail/malformedModuleQualifier.2.js b/tests/auto/qml/qqmlecmascript/data/jsimportfail/malformedModuleQualifier.2.js new file mode 100644 index 0000000000..eced64f9dd --- /dev/null +++ b/tests/auto/qml/qqmlecmascript/data/jsimportfail/malformedModuleQualifier.2.js @@ -0,0 +1,3 @@ +.import QtQuick 2.0 as qq + +function foo() { return 'bar' } diff --git a/tests/auto/qml/qqmlecmascript/data/jsimportfail/malformedModuleQualifier.2.qml b/tests/auto/qml/qqmlecmascript/data/jsimportfail/malformedModuleQualifier.2.qml new file mode 100644 index 0000000000..e65eb5c8d0 --- /dev/null +++ b/tests/auto/qml/qqmlecmascript/data/jsimportfail/malformedModuleQualifier.2.qml @@ -0,0 +1,5 @@ +import QtQuick 2.0 +import "malformedModuleQualifier.2.js" as JS + +Item { +} diff --git a/tests/auto/qml/qqmlecmascript/data/jsimportfail/malformedModuleQualifier.js b/tests/auto/qml/qqmlecmascript/data/jsimportfail/malformedModuleQualifier.js new file mode 100644 index 0000000000..f1116fb55a --- /dev/null +++ b/tests/auto/qml/qqmlecmascript/data/jsimportfail/malformedModuleQualifier.js @@ -0,0 +1,3 @@ +.import QtQuick 2.0 QQ + +function foo() { return 'bar' } diff --git a/tests/auto/qml/qqmlecmascript/data/jsimportfail/malformedModuleQualifier.qml b/tests/auto/qml/qqmlecmascript/data/jsimportfail/malformedModuleQualifier.qml new file mode 100644 index 0000000000..68cb61cdbd --- /dev/null +++ b/tests/auto/qml/qqmlecmascript/data/jsimportfail/malformedModuleQualifier.qml @@ -0,0 +1,5 @@ +import QtQuick 2.0 +import "malformedModuleQualifier.js" as JS + +Item { +} diff --git a/tests/auto/qml/qqmlecmascript/data/jsimportfail/malformedModuleVersion.js b/tests/auto/qml/qqmlecmascript/data/jsimportfail/malformedModuleVersion.js new file mode 100644 index 0000000000..8ecc977768 --- /dev/null +++ b/tests/auto/qml/qqmlecmascript/data/jsimportfail/malformedModuleVersion.js @@ -0,0 +1,3 @@ +.import QtQuick latest as QQ + +function foo() { return 'bar' } diff --git a/tests/auto/qml/qqmlecmascript/data/jsimportfail/malformedModuleVersion.qml b/tests/auto/qml/qqmlecmascript/data/jsimportfail/malformedModuleVersion.qml new file mode 100644 index 0000000000..dc3b8d8d61 --- /dev/null +++ b/tests/auto/qml/qqmlecmascript/data/jsimportfail/malformedModuleVersion.qml @@ -0,0 +1,5 @@ +import QtQuick 2.0 +import "malformedModuleVersion.js" as JS + +Item { +} diff --git a/tests/auto/qml/qqmlecmascript/data/jsimportfail/missingFileQualifier.js b/tests/auto/qml/qqmlecmascript/data/jsimportfail/missingFileQualifier.js new file mode 100644 index 0000000000..a21f3b1837 --- /dev/null +++ b/tests/auto/qml/qqmlecmascript/data/jsimportfail/missingFileQualifier.js @@ -0,0 +1,3 @@ +.import "other.js" + +function foo() { return 'bar' } diff --git a/tests/auto/qml/qqmlecmascript/data/jsimportfail/missingFileQualifier.qml b/tests/auto/qml/qqmlecmascript/data/jsimportfail/missingFileQualifier.qml new file mode 100644 index 0000000000..f600e4a9ab --- /dev/null +++ b/tests/auto/qml/qqmlecmascript/data/jsimportfail/missingFileQualifier.qml @@ -0,0 +1,5 @@ +import QtQuick 2.0 +import "missingFileQualifier.js" as JS + +Item { +} diff --git a/tests/auto/qml/qqmlecmascript/data/jsimportfail/missingModuleQualifier.js b/tests/auto/qml/qqmlecmascript/data/jsimportfail/missingModuleQualifier.js new file mode 100644 index 0000000000..eb71776c89 --- /dev/null +++ b/tests/auto/qml/qqmlecmascript/data/jsimportfail/missingModuleQualifier.js @@ -0,0 +1,3 @@ +.import QtQuick 2.0 + +function foo() { return 'bar' } diff --git a/tests/auto/qml/qqmlecmascript/data/jsimportfail/missingModuleQualifier.qml b/tests/auto/qml/qqmlecmascript/data/jsimportfail/missingModuleQualifier.qml new file mode 100644 index 0000000000..b23d6c19b9 --- /dev/null +++ b/tests/auto/qml/qqmlecmascript/data/jsimportfail/missingModuleQualifier.qml @@ -0,0 +1,5 @@ +import QtQuick 2.0 +import "missingModuleQualifier.js" as JS + +Item { +} diff --git a/tests/auto/qml/qqmlecmascript/data/jsimportfail/missingModuleVersion.js b/tests/auto/qml/qqmlecmascript/data/jsimportfail/missingModuleVersion.js new file mode 100644 index 0000000000..0ad75fa900 --- /dev/null +++ b/tests/auto/qml/qqmlecmascript/data/jsimportfail/missingModuleVersion.js @@ -0,0 +1,3 @@ +.import QtQuick as QQ + +function foo() { return 'bar' } diff --git a/tests/auto/qml/qqmlecmascript/data/jsimportfail/missingModuleVersion.qml b/tests/auto/qml/qqmlecmascript/data/jsimportfail/missingModuleVersion.qml new file mode 100644 index 0000000000..e818c8ed49 --- /dev/null +++ b/tests/auto/qml/qqmlecmascript/data/jsimportfail/missingModuleVersion.qml @@ -0,0 +1,5 @@ +import QtQuick 2.0 +import "missingModuleVersion.js" as JS + +Item { +} diff --git a/tests/auto/qml/qqmlecmascript/tst_qqmlecmascript.cpp b/tests/auto/qml/qqmlecmascript/tst_qqmlecmascript.cpp index 39174f089e..66ae27e9ec 100644 --- a/tests/auto/qml/qqmlecmascript/tst_qqmlecmascript.cpp +++ b/tests/auto/qml/qqmlecmascript/tst_qqmlecmascript.cpp @@ -3783,6 +3783,83 @@ void tst_qqmlecmascript::importScripts_data() << (QVariantList() << QVariant(QString("Hello")) << QVariant(QString("Hello")) << QVariant(QString("Hello"))); + + QTest::newRow("malformed import statement") + << testFileUrl("jsimportfail/malformedImport.qml") + << QString() + << (QStringList() << testFileUrl("jsimportfail/malformedImport.js").toString() + QLatin1String(":1: SyntaxError: Unexpected token .")) + << QStringList() + << QVariantList(); + + QTest::newRow("malformed file name") + << testFileUrl("jsimportfail/malformedFile.qml") + << QString() + << (QStringList() << testFileUrl("jsimportfail/malformedFile.js").toString() + QLatin1String(":0:1: Imported file must be a script")) + << QStringList() + << QVariantList(); + + QTest::newRow("missing file qualifier") + << testFileUrl("jsimportfail/missingFileQualifier.qml") + << QString() + << (QStringList() << testFileUrl("jsimportfail/missingFileQualifier.js").toString() + QLatin1String(":0:1: File import requires a qualifier")) + << QStringList() + << QVariantList(); + + QTest::newRow("malformed file qualifier") + << testFileUrl("jsimportfail/malformedFileQualifier.qml") + << QString() + << (QStringList() << testFileUrl("jsimportfail/malformedFileQualifier.js").toString() + QLatin1String(":0:1: File import requires a qualifier")) + << QStringList() + << QVariantList(); + + QTest::newRow("malformed module qualifier 2") + << testFileUrl("jsimportfail/malformedFileQualifier.2.qml") + << QString() + << (QStringList() << testFileUrl("jsimportfail/malformedFileQualifier.2.js").toString() + QLatin1String(":0:1: Invalid import qualifier")) + << QStringList() + << QVariantList(); + + QTest::newRow("malformed module uri") + << testFileUrl("jsimportfail/malformedModule.qml") + << QString() + << (QStringList() << testFileUrl("jsimportfail/malformedModule.js").toString() + QLatin1String(":0:1: Invalid module URI")) + << QStringList() + << QVariantList(); + + QTest::newRow("missing module version") + << testFileUrl("jsimportfail/missingModuleVersion.qml") + << QString() + << (QStringList() << testFileUrl("jsimportfail/missingModuleVersion.js").toString() + QLatin1String(":0:1: Module import requires a version")) + << QStringList() + << QVariantList(); + + QTest::newRow("malformed module version") + << testFileUrl("jsimportfail/malformedModuleVersion.qml") + << QString() + << (QStringList() << testFileUrl("jsimportfail/malformedModuleVersion.js").toString() + QLatin1String(":0:1: Module import requires a version")) + << QStringList() + << QVariantList(); + + QTest::newRow("missing module qualifier") + << testFileUrl("jsimportfail/missingModuleQualifier.qml") + << QString() + << (QStringList() << testFileUrl("jsimportfail/missingModuleQualifier.js").toString() + QLatin1String(":0:1: Module import requires a qualifier")) + << QStringList() + << QVariantList(); + + QTest::newRow("malformed module qualifier") + << testFileUrl("jsimportfail/malformedModuleQualifier.qml") + << QString() + << (QStringList() << testFileUrl("jsimportfail/malformedModuleQualifier.js").toString() + QLatin1String(":0:1: Module import requires a qualifier")) + << QStringList() + << QVariantList(); + + QTest::newRow("malformed module qualifier 2") + << testFileUrl("jsimportfail/malformedModuleQualifier.2.qml") + << QString() + << (QStringList() << testFileUrl("jsimportfail/malformedModuleQualifier.2.js").toString() + QLatin1String(":0:1: Invalid import qualifier")) + << QStringList() + << QVariantList(); } void tst_qqmlecmascript::importScripts() |