From c66c0ba4ddd3a58a9428f6fe6917457a4321831a Mon Sep 17 00:00:00 2001 From: Ulf Hermann Date: Thu, 25 Jan 2018 10:08:19 +0100 Subject: Match QQmlEngineDebugServiceTest to the service The fact that the service transmits QObject properties by their objectNames, rather than as proper references is not very useful and in fact the reason for some strange behavior in QtCreator. However, it's been that way for a long time and we should test what the service actually does. Task-number: QTBUG-65852 Change-Id: I6e489bb9877fae129432b5b3d5d4c7bfb5deaa9b Reviewed-by: Simon Hausmann --- .../tst_qqmlenginedebugservice.cpp | 20 ++++++++++++++++---- .../qml/debugger/shared/qqmlenginedebugclient.cpp | 2 +- 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/tests/auto/qml/debugger/qqmlenginedebugservice/tst_qqmlenginedebugservice.cpp b/tests/auto/qml/debugger/qqmlenginedebugservice/tst_qqmlenginedebugservice.cpp index dbefb3bab5..bdd691732a 100644 --- a/tests/auto/qml/debugger/qqmlenginedebugservice/tst_qqmlenginedebugservice.cpp +++ b/tests/auto/qml/debugger/qqmlenginedebugservice/tst_qqmlenginedebugservice.cpp @@ -229,8 +229,18 @@ void tst_QQmlEngineDebugService::recursiveObjectTest( QCOMPARE(p.name, QString::fromUtf8(pmeta.name())); - // TODO test complex types - if (pmeta.type() < QVariant::UserType && pmeta.userType() != QMetaType::QVariant) { + if (pmeta.userType() == QMetaType::QObjectStar) { + const QmlDebugObjectReference ref = qvariant_cast(p.value); + QObject *pobj = qvariant_cast(pmeta.read(o)); + if (pobj) { + if (pobj->objectName().isEmpty()) + QCOMPARE(ref.name, QString("")); + else + QCOMPARE(ref.name, pobj->objectName()); + } else { + QCOMPARE(ref.name, QString("")); + } + } else if (pmeta.type() < QVariant::UserType && pmeta.userType() != QMetaType::QVariant) { const QVariant expected = pmeta.read(o); QVERIFY2(p.value == expected, QString::fromLatin1("%1 != %2. Details: %3/%4/%5/%6") .arg(QTest::toString(p.value)).arg(QTest::toString(expected)).arg(p.name) @@ -1262,7 +1272,8 @@ void tst_QQmlEngineDebugService::queryObjectTree() QmlDebugObjectReference targetReference = qvariant_cast(propertyChangeTarget.value); QVERIFY(!targetReference.className.isEmpty()); - QVERIFY(targetReference.debugId != -1); + QCOMPARE(targetReference.debugId, -1); + QCOMPARE(targetReference.name, QString("")); // check transition QmlDebugObjectReference transition = obj.children[0]; @@ -1280,7 +1291,8 @@ void tst_QQmlEngineDebugService::queryObjectTree() targetReference = qvariant_cast(animationTarget.value); QVERIFY(!targetReference.className.isEmpty()); - QVERIFY(targetReference.debugId != -1); + QCOMPARE(targetReference.debugId, -1); + QCOMPARE(targetReference.name, QString("")); QCOMPARE(findProperty(animation.properties,"property").value.toString(), QString("width")); QCOMPARE(findProperty(animation.properties,"duration").value.toInt(), 100); diff --git a/tests/auto/qml/debugger/shared/qqmlenginedebugclient.cpp b/tests/auto/qml/debugger/shared/qqmlenginedebugclient.cpp index c0252a0290..7e736ec400 100644 --- a/tests/auto/qml/debugger/shared/qqmlenginedebugclient.cpp +++ b/tests/auto/qml/debugger/shared/qqmlenginedebugclient.cpp @@ -385,7 +385,7 @@ void QQmlEngineDebugClient::decode(QPacket &ds, case QmlObjectProperty::Object: { QmlDebugObjectReference obj; - obj.debugId = prop.value.toInt(); + obj.name = data.value.toString(); obj.className = prop.valueTypeName; prop.value = qVariantFromValue(obj); break; -- cgit v1.2.3