QML compare() does not reliably compare colours

Bug #1610349 reported by Andrea Bernabei
10
This bug affects 2 people
Affects Status Importance Assigned to Milestone
qtdeclarative-opensource-src (Ubuntu)
Fix Released
Undecided
Timo Jyrinki

Bug Description

See upstream bug https://bugreports.qt.io/browse/QTBUG-34878

There is already a fix upstream which has been merged to Qt5.8 ( see https://codereview.qt-project.org/#/c/158967/ )
Without that fix, all the unit tests relying on compare() to compare colours must be considered unreliable and potentially misleading, as they could be producing PASSes instead of FAILs.

Bug description copied from that link:
"QtTest's compare() function considers two colors (the QML basic type) as equal when they aren't.
I am aware that Qt.colorEqual exists (and it works correctly), but I think that this makes it far too easy to write tests that don't catch an error.
Consider the following test case:

import QtQuick 2.2
import QtTest 1.0

Item {
    Rectangle {
        id: black
        color: "#000000"
    }

    Rectangle {
        id: white
        color: "#ffffff"
    }

    TestCase {
        name: "ColorComparison"

        function test_this_should_fail() {
            compare(black.color, white.color)
        }

        function test_this_is_ok() {
            compare(black.color == white.color, false)
            compare(Qt.colorEqual(black.color, white.color), false)
        }
    }
}"

Revision history for this message
Launchpad Janitor (janitor) wrote :

Status changed to 'Confirmed' because the bug affects multiple users.

Changed in qtdeclarative-opensource-src (Ubuntu):
status: New → Confirmed
Changed in qtdeclarative-opensource-src (Ubuntu):
assignee: nobody → Timo Jyrinki (timo-jyrinki)
Changed in qtdeclarative-opensource-src (Ubuntu):
status: Confirmed → In Progress
Revision history for this message
Launchpad Janitor (janitor) wrote :

This bug was fixed in the package qtdeclarative-opensource-src - 5.6.1-7ubuntu1~2

---------------
qtdeclarative-opensource-src (5.6.1-7ubuntu1~2) yakkety; urgency=medium

  * debian/patches/Fix-visibility-of-properties-in-value-types.patch:
    - Fix compare() in QML (LP: #1610349)
  * Update symbols.
  * debian/patches/Fix-V4-on-big-endian.patch:
    - Fixes value/tag reads on 32-bit big-endian and offsets on 64-bit.
      (LP: #1606927)

 -- Timo Jyrinki <email address hidden> Mon, 22 Aug 2016 13:31:32 +0000

Changed in qtdeclarative-opensource-src (Ubuntu):
status: In Progress → Fix Released
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.