Make sure tryCompare value argument is not undefined
authorAlbert Astals Cid <albert.astals@canonical.com>
Wed, 15 May 2013 15:28:35 +0000 (17:28 +0200)
committerThe Qt Project <gerrit-noreply@qt-project.org>
Wed, 29 May 2013 06:23:09 +0000 (08:23 +0200)
It happens often that people convert a
compare(foo.bar, 3)
to a
tryCompare(foo.bar, 3)
and unfortunately that succeeds but doesn't do what they expected

This makes tryCompare fail if no third argument is given

Task-number: QTBUG-31427

Change-Id: I0c9618dae9aad4be55aa35c3e2dcf3535728beaa
Reviewed-by: Alan Alpert <aalpert@blackberry.com>
dist/changes-5.1.0
src/imports/testlib/TestCase.qml

index 50bdc2f..8633d22 100644 (file)
@@ -43,6 +43,9 @@ Third party components
    as count, which are based off of the data model will no longer update
    immediately if queried. Updates are batched to happen once per frame (or
    when properties are being set).
+
+ - tryCompare now correctly fails when it only gets two parameters
+
 ****************************************************************************
 *                          Library                                         *
 ****************************************************************************
index 7584241..0bec4cd 100644 (file)
@@ -291,6 +291,11 @@ Item {
     }
 
     function tryCompare(obj, prop, value, timeout) {
+        if (arguments.length == 2) {
+            qtest_results.fail("A value is required for tryCompare",
+                        util.callerFile(), util.callerLine())
+            throw new Error("QtQuickTest::fail")
+        }
         if (!timeout)
             timeout = 5000
         if (!qtest_compareInternal(obj[prop], value))