aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristian Stenger <christian.stenger@qt.io>2020-07-29 16:53:47 +0200
committerChristian Stenger <christian.stenger@qt.io>2020-07-30 13:43:12 +0000
commit2944b33530db508d067669f218af407487950a27 (patch)
treebbb1a595d9c2ab6516941fb85c8a233d3bbf9b5a
parenta826267cd4aac2b9aff10a97ca1ca9818b707faa (diff)
Tests: Fix codemodel check test
Change-Id: I9ca0fec928ac90fd5951fc54963ba5e96d5a53a6 Reviewed-by: Fawzi Mohamed <fawzi.mohamed@qt.io>
-rw-r--r--tests/auto/qml/codemodel/check/case-fallthrough.qml4
-rw-r--r--tests/auto/qml/codemodel/check/equality-checks.qml54
-rw-r--r--tests/auto/qml/codemodel/check/tst_check.cpp14
3 files changed, 41 insertions, 31 deletions
diff --git a/tests/auto/qml/codemodel/check/case-fallthrough.qml b/tests/auto/qml/codemodel/check/case-fallthrough.qml
index a1851da564..186d58df4b 100644
--- a/tests/auto/qml/codemodel/check/case-fallthrough.qml
+++ b/tests/auto/qml/codemodel/check/case-fallthrough.qml
@@ -2,7 +2,7 @@ import QtQuick 2.0
Item {
x: {
- switch (a) {
+ switch (a) { // 108 17 17
case 1:
case 2:
x = 1
@@ -21,7 +21,7 @@ Item {
break
case 9:
}
- switch (a) {
+ switch (a) { // 108 17 17
case 1:
case 2: // 20 9 12
x = 1
diff --git a/tests/auto/qml/codemodel/check/equality-checks.qml b/tests/auto/qml/codemodel/check/equality-checks.qml
index e92b1c4cc1..1e815e7148 100644
--- a/tests/auto/qml/codemodel/check/equality-checks.qml
+++ b/tests/auto/qml/codemodel/check/equality-checks.qml
@@ -1,4 +1,4 @@
-import Qt 4.7
+import QtQuick 1.0
Rectangle {
function foo(k) {
@@ -10,54 +10,54 @@ Rectangle {
var b = true
var o = {}
- if (s == s) {}
+ if (s == s) {} // -1 15 16 # false positive
if (s == n) {} // 126 15 16
- if (s == N) {} // ### should warn: always false
- if (s == u) {} // ### should warn: always false
+ if (s == N) {} // -2 15 16 # wrong warning (always false)
+ if (s == u) {} // -2 15 16 # wrong warning (always false)
if (s == b) {} // 126 15 16
if (s == o) {} // 126 15 16
if (s == k) {} // 126 15 16
if (n == s) {} // 126 15 16
- if (n == n) {}
- if (n == N) {} // ### should warn: always false
- if (n == u) {} // ### should warn: always false
+ if (n == n) {} // -1 15 16 # false positive
+ if (n == N) {} // -2 15 16 # wrong warning (always false)
+ if (n == u) {} // -2 15 16 # wrong warning (always false)
if (n == b) {} // 126 15 16
if (n == o) {} // 126 15 16
if (n == k) {} // 126 15 16
- if (N == s) {} // ### should warn: always false
- if (N == n) {} // ### should warn: always false
- if (N == N) {}
- if (N == u) {} // ### should warn: always true
- // ### should warn: always false
- if (N == b) {} // 126 15 16
- if (N == o) {} // ### should warn: always false
+ if (N == s) {} // -2 15 16 # wrong warning (always false)
+ if (N == n) {} // -2 15 16 # wrong warning (always false)
+ if (N == N) {} // -1 15 16 # false positive
+ if (N == u) {} // -2 15 16 # wrong warning (always true)
+
+ if (N == b) {} // -2 15 16 # wrong warning (always false)
+ if (N == o) {} // -2 15 16 # wrong warning (always false)
if (N == k) {} // 126 15 16
- if (u == s) {} // ### should warn: always false
- if (u == n) {} // ### should warn: always false
- if (u == N) {} // ### should warn: always true
- if (u == u) {} // ### should warn: always true
- if (u == b) {} // ### should warn: always false
- if (u == o) {} // ### should warn: always false
+ if (u == s) {} // -2 15 16 # wrong warning (always false)
+ if (u == n) {} // -2 15 16 # wrong warning (always false)
+ if (u == N) {} // -2 15 16 # wrong warning (always true)
+ if (u == u) {} // -2 15 16 # wrong warning (always true)
+ if (u == b) {} // -2 15 16 # wrong warning (always false)
+ if (u == o) {} // -2 15 16 # wrong warning (always false)
if (u == k) {} // 126 15 16
if (b == s) {} // 126 15 16
if (b == n) {} // 126 15 16
- // ### should warn: always false
- if (b == N) {} // 126 15 16
- if (b == u) {} // ### should warn: always false
- if (b == b) {}
+
+ if (b == N) {} // -2 15 16 # wrong warning (always false)
+ if (b == u) {} // -2 15 16 # wrong warning (always false)
+ if (b == b) {} // -1 15 16 # false positive
if (b == o) {} // 126 15 16
if (b == k) {} // 126 15 16
if (o == s) {} // 126 15 16
if (o == n) {} // 126 15 16
- if (o == N) {} // ### should warn: always false
- if (o == u) {} // ### should warn: always false
+ if (o == N) {} // -2 15 16 # wrong warning (always false)
+ if (o == u) {} // -2 15 16 # wrong warning (always false)
if (o == b) {} // 126 15 16
- if (o == o) {}
+ if (o == o) {} // -1 15 16 # false positive
if (o == k) {} // 126 15 16
if (k == s) {} // 126 15 16
diff --git a/tests/auto/qml/codemodel/check/tst_check.cpp b/tests/auto/qml/codemodel/check/tst_check.cpp
index 8a52fd0ced..d89bda4658 100644
--- a/tests/auto/qml/codemodel/check/tst_check.cpp
+++ b/tests/auto/qml/codemodel/check/tst_check.cpp
@@ -131,9 +131,10 @@ void tst_Check::test()
QList<Message> messages = checker();
std::sort(messages.begin(), messages.end(), &offsetComparator);
- const QRegExp messagePattern(" (\\d+) (\\d+) (\\d+)");
+ const QRegExp messagePattern(" (-?\\d+) (\\d+) (\\d+)\\s*(# false positive|# wrong warning.*)?");
QList<Message> expectedMessages;
+ QHash<int, QString> xfails;
foreach (const SourceLocation &comment, doc->engine()->comments()) {
const QString text = doc->source().mid(comment.begin(), comment.end() - comment.begin());
@@ -151,6 +152,9 @@ void tst_Check::test()
columnStart),
message.type = static_cast<QmlJS::StaticAnalysis::Type>(type);
expectedMessages += message;
+
+ if (messagePattern.captureCount() == 4 && !messagePattern.cap(4).isEmpty())
+ xfails.insert(expectedMessages.size() - 1, messagePattern.cap(4));
}
for (int i = 0; i < messages.size(); ++i) {
@@ -160,6 +164,9 @@ void tst_Check::test()
Message expected = expectedMessages.at(i);
bool fail = false;
fail |= !QCOMPARE_NOEXIT(actual.location.startLine, expected.location.startLine);
+ auto xFail = xfails.find(i);
+ if (xFail != xfails.end())
+ QEXPECT_FAIL(path.toUtf8(), xFail.value().toUtf8(), Continue);
fail |= !QCOMPARE_NOEXIT((int)actual.type, (int)expected.type);
if (fail)
return;
@@ -176,7 +183,10 @@ void tst_Check::test()
Message missingMessage = expectedMessages.at(i);
qDebug() << "expected message of type" << missingMessage.type << "on line" << missingMessage.location.startLine;
}
- QFAIL("more messages expected");
+ if (path.endsWith("avoid-var.qml"))
+ QEXPECT_FAIL(path.toUtf8(), "currently broken", Continue);
+
+ QVERIFY2(false, "more messages expected");
}
if (expectedMessages.size() < messages.size()) {
for (int i = expectedMessages.size(); i < messages.size(); ++i) {