aboutsummaryrefslogtreecommitdiffstats
path: root/tests/auto/qml/qqmlecmascript
diff options
context:
space:
mode:
authorMatthew Vogt <matthew.vogt@nokia.com>2012-07-06 13:04:53 +1000
committerQt by Nokia <qt-info@nokia.com>2012-07-11 01:49:59 +0200
commita1a2c81d7fd5512b8c0531b01453656fc4c96bed (patch)
tree519b6c02482c3487d64a060041e95ae09a878c49 /tests/auto/qml/qqmlecmascript
parentf5cb65b35e076facbce45e896902a34da7036135 (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')
-rw-r--r--tests/auto/qml/qqmlecmascript/data/jsimportfail/malformedFile.js3
-rw-r--r--tests/auto/qml/qqmlecmascript/data/jsimportfail/malformedFile.qml5
-rw-r--r--tests/auto/qml/qqmlecmascript/data/jsimportfail/malformedFileQualifier.2.js3
-rw-r--r--tests/auto/qml/qqmlecmascript/data/jsimportfail/malformedFileQualifier.2.qml5
-rw-r--r--tests/auto/qml/qqmlecmascript/data/jsimportfail/malformedFileQualifier.js3
-rw-r--r--tests/auto/qml/qqmlecmascript/data/jsimportfail/malformedFileQualifier.qml5
-rw-r--r--tests/auto/qml/qqmlecmascript/data/jsimportfail/malformedImport.js3
-rw-r--r--tests/auto/qml/qqmlecmascript/data/jsimportfail/malformedImport.qml5
-rw-r--r--tests/auto/qml/qqmlecmascript/data/jsimportfail/malformedModule.js3
-rw-r--r--tests/auto/qml/qqmlecmascript/data/jsimportfail/malformedModule.qml5
-rw-r--r--tests/auto/qml/qqmlecmascript/data/jsimportfail/malformedModuleQualifier.2.js3
-rw-r--r--tests/auto/qml/qqmlecmascript/data/jsimportfail/malformedModuleQualifier.2.qml5
-rw-r--r--tests/auto/qml/qqmlecmascript/data/jsimportfail/malformedModuleQualifier.js3
-rw-r--r--tests/auto/qml/qqmlecmascript/data/jsimportfail/malformedModuleQualifier.qml5
-rw-r--r--tests/auto/qml/qqmlecmascript/data/jsimportfail/malformedModuleVersion.js3
-rw-r--r--tests/auto/qml/qqmlecmascript/data/jsimportfail/malformedModuleVersion.qml5
-rw-r--r--tests/auto/qml/qqmlecmascript/data/jsimportfail/missingFileQualifier.js3
-rw-r--r--tests/auto/qml/qqmlecmascript/data/jsimportfail/missingFileQualifier.qml5
-rw-r--r--tests/auto/qml/qqmlecmascript/data/jsimportfail/missingModuleQualifier.js3
-rw-r--r--tests/auto/qml/qqmlecmascript/data/jsimportfail/missingModuleQualifier.qml5
-rw-r--r--tests/auto/qml/qqmlecmascript/data/jsimportfail/missingModuleVersion.js3
-rw-r--r--tests/auto/qml/qqmlecmascript/data/jsimportfail/missingModuleVersion.qml5
-rw-r--r--tests/auto/qml/qqmlecmascript/tst_qqmlecmascript.cpp77
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()