summaryrefslogtreecommitdiffstats
path: root/tests/auto/dbus
diff options
context:
space:
mode:
authorFabian Kosmale <fabian.kosmale@qt.io>2020-10-30 10:43:46 +0100
committerFabian Kosmale <fabian.kosmale@qt.io>2020-10-30 13:27:14 +0100
commitbbb79ae7ab292ad3ffada87a2baa539aac7c1ca2 (patch)
treef571a3ec427f148c7411144f4214a58d247ae9b0 /tests/auto/dbus
parent951274a9b9186ec9b840eb96bed99a501d3f214b (diff)
Adjust tst_qdbusmarshall to QVariant changes
Comparing QVariant's containing QDBusArguments does not work anymore in Qt 6, where QVariant will simply use QMetaType equals. Thus we now do the comparisons in a more manual way. This is currently only partially implemented. Additionally, adjust to changed warning message. Fixes: QTBUG-87998 Change-Id: Ie63db4e8c8d03d7627234f3c892067d1557454af Reviewed-by: Liang Qi <liang.qi@qt.io>
Diffstat (limited to 'tests/auto/dbus')
-rw-r--r--tests/auto/dbus/qdbusmarshall/tst_qdbusmarshall.cpp82
1 files changed, 58 insertions, 24 deletions
diff --git a/tests/auto/dbus/qdbusmarshall/tst_qdbusmarshall.cpp b/tests/auto/dbus/qdbusmarshall/tst_qdbusmarshall.cpp
index c4419d552f..aaa6e22392 100644
--- a/tests/auto/dbus/qdbusmarshall/tst_qdbusmarshall.cpp
+++ b/tests/auto/dbus/qdbusmarshall/tst_qdbusmarshall.cpp
@@ -640,89 +640,109 @@ void tst_QDBusMarshall::sendArgument_data()
QTest::addColumn<QVariant>("value");
QTest::addColumn<QString>("sig");
QTest::addColumn<int>("classification");
+ QTest::addColumn<QVariant>("unwrappedValue");
QDBusArgument();
QDBusArgument arg;
arg = QDBusArgument();
arg << true;
- QTest::newRow("bool") << QVariant::fromValue(arg) << "b" << int(QDBusArgument::BasicType);;
+ QTest::newRow("bool") << QVariant::fromValue(arg) << "b" << int(QDBusArgument::BasicType)
+ << QVariant::fromValue(true);
arg = QDBusArgument();
arg << false;
- QTest::newRow("bool2") << QVariant::fromValue(arg) << "b" << int(QDBusArgument::BasicType);
+ QTest::newRow("bool2") << QVariant::fromValue(arg) << "b" << int(QDBusArgument::BasicType)
+ << QVariant::fromValue(false);
arg = QDBusArgument();
arg << uchar(1);
- QTest::newRow("byte") << QVariant::fromValue(arg) << "y" << int(QDBusArgument::BasicType);
+ QTest::newRow("byte") << QVariant::fromValue(arg) << "y" << int(QDBusArgument::BasicType)
+ << QVariant::fromValue(uchar(1));
arg = QDBusArgument();
arg << short(2);
- QTest::newRow("int16") << QVariant::fromValue(arg) << "n" << int(QDBusArgument::BasicType);
+ QTest::newRow("int16") << QVariant::fromValue(arg) << "n" << int(QDBusArgument::BasicType)
+ << QVariant::fromValue(short(2));
arg = QDBusArgument();
arg << ushort(3);
- QTest::newRow("uint16") << QVariant::fromValue(arg) << "q" << int(QDBusArgument::BasicType);
+ QTest::newRow("uint16") << QVariant::fromValue(arg) << "q" << int(QDBusArgument::BasicType)
+ << QVariant::fromValue(ushort(3));
arg = QDBusArgument();
arg << 1;
- QTest::newRow("int32") << QVariant::fromValue(arg) << "i" << int(QDBusArgument::BasicType);
+ QTest::newRow("int32") << QVariant::fromValue(arg) << "i" << int(QDBusArgument::BasicType)
+ << QVariant::fromValue(1);
arg = QDBusArgument();
arg << 2U;
- QTest::newRow("uint32") << QVariant::fromValue(arg) << "u" << int(QDBusArgument::BasicType);
+ QTest::newRow("uint32") << QVariant::fromValue(arg) << "u" << int(QDBusArgument::BasicType)
+ << QVariant::fromValue(2U);
arg = QDBusArgument();
arg << Q_INT64_C(3);
- QTest::newRow("int64") << QVariant::fromValue(arg) << "x" << int(QDBusArgument::BasicType);
+ QTest::newRow("int64") << QVariant::fromValue(arg) << "x" << int(QDBusArgument::BasicType)
+ << QVariant::fromValue(Q_INT64_C(3));
arg = QDBusArgument();
arg << Q_UINT64_C(4);
- QTest::newRow("uint64") << QVariant::fromValue(arg) << "t" << int(QDBusArgument::BasicType);
+ QTest::newRow("uint64") << QVariant::fromValue(arg) << "t" << int(QDBusArgument::BasicType)
+ << QVariant::fromValue(Q_UINT64_C(4));
arg = QDBusArgument();
arg << 42.5;
- QTest::newRow("double") << QVariant::fromValue(arg) << "d" << int(QDBusArgument::BasicType);
+ QTest::newRow("double") << QVariant::fromValue(arg) << "d" << int(QDBusArgument::BasicType)
+ << QVariant::fromValue(42.5);
arg = QDBusArgument();
arg << QLatin1String("ping");
- QTest::newRow("string") << QVariant::fromValue(arg) << "s" << int(QDBusArgument::BasicType);
+ QTest::newRow("string") << QVariant::fromValue(arg) << "s" << int(QDBusArgument::BasicType)
+ << QVariant::fromValue(QString("ping"));
arg = QDBusArgument();
arg << QDBusObjectPath("/org/kde");
- QTest::newRow("objectpath") << QVariant::fromValue(arg) << "o" << int(QDBusArgument::BasicType);
+ QTest::newRow("objectpath") << QVariant::fromValue(arg) << "o" << int(QDBusArgument::BasicType)
+ << QVariant::fromValue(QDBusObjectPath("/org/kde"));
arg = QDBusArgument();
arg << QDBusSignature("g");
- QTest::newRow("signature") << QVariant::fromValue(arg) << "g" << int(QDBusArgument::BasicType);
+ QTest::newRow("signature") << QVariant::fromValue(arg) << "g" << int(QDBusArgument::BasicType)
+ << QVariant::fromValue(QDBusSignature("g"));
arg = QDBusArgument();
arg << QLatin1String("");
- QTest::newRow("emptystring") << QVariant::fromValue(arg) << "s" << int(QDBusArgument::BasicType);
+ QTest::newRow("emptystring") << QVariant::fromValue(arg) << "s" << int(QDBusArgument::BasicType)
+ << QVariant::fromValue(QString(""));
arg = QDBusArgument();
arg << QString();
- QTest::newRow("nullstring") << QVariant::fromValue(arg) << "s" << int(QDBusArgument::BasicType);
+ QTest::newRow("nullstring") << QVariant::fromValue(arg) << "s" << int(QDBusArgument::BasicType)
+ << QVariant::fromValue(QString());
if (fileDescriptorPassing) {
arg = QDBusArgument();
arg << QDBusUnixFileDescriptor(fileDescriptorForTest());
- QTest::newRow("filedescriptor") << QVariant::fromValue(arg) << "h" << int(QDBusArgument::BasicType);
+ QTest::newRow("filedescriptor") << QVariant::fromValue(arg) << "h" << int(QDBusArgument::BasicType)
+ << QVariant::fromValue(QDBusUnixFileDescriptor(fileDescriptorForTest()));
}
arg = QDBusArgument();
arg << QDBusVariant(1);
- QTest::newRow("variant") << QVariant::fromValue(arg) << "v" << int(QDBusArgument::VariantType);
+ QTest::newRow("variant") << QVariant::fromValue(arg) << "v" << int(QDBusArgument::VariantType)
+ << QVariant::fromValue(QDBusVariant(1));
arg = QDBusArgument();
arg << QDBusVariant(QVariant::fromValue(QDBusVariant(1)));
- QTest::newRow("variant-variant") << QVariant::fromValue(arg) << "v" << int(QDBusArgument::VariantType);
+ QTest::newRow("variant-variant") << QVariant::fromValue(arg) << "v" << int(QDBusArgument::VariantType)
+ << QVariant::fromValue(QVariant::fromValue(QDBusVariant(1)));
arg = QDBusArgument();
arg.beginArray(QVariant::Int);
arg << 1 << 2 << 3 << -4;
arg.endArray();
- QTest::newRow("array-of-int") << QVariant::fromValue(arg) << "ai" << int(QDBusArgument::ArrayType);
+ QTest::newRow("array-of-int") << QVariant::fromValue(arg) << "ai" << int(QDBusArgument::ArrayType)
+ << QVariant::fromValue(arg);
arg = QDBusArgument();
arg.beginMap(QVariant::Int, QVariant::UInt);
@@ -733,13 +753,15 @@ void tst_QDBusMarshall::sendArgument_data()
arg << 3 << 4U;
arg.endMapEntry();
arg.endMap();
- QTest::newRow("map") << QVariant::fromValue(arg) << "a{iu}" << int(QDBusArgument::MapType);
+ QTest::newRow("map") << QVariant::fromValue(arg) << "a{iu}" << int(QDBusArgument::MapType)
+ << QVariant::fromValue(arg);
arg = QDBusArgument();
arg.beginStructure();
arg << 1 << 2U << short(-3) << ushort(4) << 5.0 << false;
arg.endStructure();
- QTest::newRow("structure") << QVariant::fromValue(arg) << "(iunqdb)" << int(QDBusArgument::StructureType);
+ QTest::newRow("structure") << QVariant::fromValue(arg) << "(iunqdb)" << int(QDBusArgument::StructureType)
+ << QVariant::fromValue(arg);
}
void tst_QDBusMarshall::sendBasic()
@@ -819,6 +841,7 @@ void tst_QDBusMarshall::sendArgument()
{
QFETCH(QVariant, value);
QFETCH(QString, sig);
+ QFETCH(QVariant, unwrappedValue);
QDBusConnection con = QDBusConnection::sessionBus();
@@ -861,7 +884,18 @@ void tst_QDBusMarshall::sendArgument()
QVERIFY(arg.atEnd());
QCOMPARE(arg.currentType(), QDBusArgument::UnknownType);
- QCOMPARE(extracted, value);
+
+ QEXPECT_FAIL("variant-variant", "Needs more QVariant unwrapping", Continue);
+ if (extracted.metaType() == QMetaType::fromType<QDBusUnixFileDescriptor>()) {
+ auto fd1 = extracted.value<QDBusUnixFileDescriptor>();
+ auto fd2 = unwrappedValue.value<QDBusUnixFileDescriptor>();
+ QVERIFY(compare(fd1, fd2));
+ } else if (extracted.metaType() != QMetaType::fromType<QDBusArgument>()) {
+ QCOMPARE(extracted, unwrappedValue);
+ } else {
+ QEXPECT_FAIL("", "Comparison logic needs to be fixed", Continue);
+ QVERIFY(compare(extracted, value));
+ }
}
void tst_QDBusMarshall::sendSignalErrors()
@@ -941,12 +975,12 @@ void tst_QDBusMarshall::sendCallErrors_data()
QTest::newRow("invalid-variant1") << serviceName << objectPath << interfaceName << "ping"
<< (QVariantList() << QVariant())
<< "org.freedesktop.DBus.Error.Failed"
- << "Marshalling failed: Variant containing QVariant::Invalid passed in arguments"
+ << "Marshalling failed: Invalid QVariant passed in arguments"
<< "QDBusMarshaller: cannot add an invalid QVariant";
QTest::newRow("invalid-variant1") << serviceName << objectPath << interfaceName << "ping"
<< (QVariantList() << QVariant::fromValue(QDBusVariant()))
<< "org.freedesktop.DBus.Error.Failed"
- << "Marshalling failed: Variant containing QVariant::Invalid passed in arguments"
+ << "Marshalling failed: Invalid QVariant passed in arguments"
<< "QDBusMarshaller: cannot add a null QDBusVariant";
QTest::newRow("builtin-unregistered") << serviceName << objectPath << interfaceName << "ping"