diff options
Diffstat (limited to 'tests/auto/dbus/qdbusinterface')
10 files changed, 169 insertions, 209 deletions
diff --git a/tests/auto/dbus/qdbusinterface/.prev_CMakeLists.txt b/tests/auto/dbus/qdbusinterface/.prev_CMakeLists.txt deleted file mode 100644 index ae79490a83..0000000000 --- a/tests/auto/dbus/qdbusinterface/.prev_CMakeLists.txt +++ /dev/null @@ -1,4 +0,0 @@ -# Generated from qdbusinterface.pro. - -add_subdirectory(qmyserver) -add_subdirectory(qdbusinterface) diff --git a/tests/auto/dbus/qdbusinterface/CMakeLists.txt b/tests/auto/dbus/qdbusinterface/CMakeLists.txt index 321c61a627..56439f9ef6 100644 --- a/tests/auto/dbus/qdbusinterface/CMakeLists.txt +++ b/tests/auto/dbus/qdbusinterface/CMakeLists.txt @@ -1,41 +1,44 @@ -# Generated from qdbusinterface.pro. +# Copyright (C) 2022 The Qt Company Ltd. +# SPDX-License-Identifier: BSD-3-Clause + +if(NOT QT_BUILD_STANDALONE_TESTS AND NOT QT_BUILDING_QT) + cmake_minimum_required(VERSION 3.16) + project(tst_qdbusinterface LANGUAGES CXX) + find_package(Qt6BuildInternals REQUIRED COMPONENTS STANDALONE_TEST) +endif() add_subdirectory(qmyserver) -# special case begin ##################################################################### ## ../tst_qdbusinterface Test: ##################################################################### -add_qt_test(tst_qdbusinterface +qt_internal_add_test(tst_qdbusinterface SOURCES myobject.h tst_qdbusinterface.cpp LIBRARIES Qt::CorePrivate Qt::DBusPrivate - PUBLIC_LIBRARIES + LIBRARIES Qt::Core Qt::DBus ) -#### Keys ignored in scope 1:.:.:qdbusinterface.pro:<TRUE>: -# CONFIG = "testcase" -# DESTDIR = "./" - ## Scopes: ##################################################################### -extend_target(tst_qdbusinterface CONDITION QT_FEATURE_dbus_linked +qt_internal_extend_target(tst_qdbusinterface CONDITION QT_FEATURE_dbus_linked DEFINES QT_LINKED_LIBDBUS - PUBLIC_LIBRARIES + LIBRARIES dbus-1 ) -extend_target(tst_qdbusinterface CONDITION NOT QT_FEATURE_dbus_linked +qt_internal_extend_target(tst_qdbusinterface CONDITION NOT QT_FEATURE_dbus_linked SOURCES ../../../../src/dbus/qdbus_symbols.cpp ) -# special case end +add_dependencies(tst_qdbusinterface qmyserver_qdbusinterface) + diff --git a/tests/auto/dbus/qdbusinterface/myobject.h b/tests/auto/dbus/qdbusinterface/myobject.h index 32da7348f2..355d4d3752 100644 --- a/tests/auto/dbus/qdbusinterface/myobject.h +++ b/tests/auto/dbus/qdbusinterface/myobject.h @@ -1,37 +1,13 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the test suite of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:GPL-EXCEPT$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3 as published by the Free Software -** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ +// Copyright (C) 2016 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only #ifndef MYOBJECT_H #define MYOBJECT_H -#include <QtCore/QObject> -#include <QtDBus/QtDBus> - +#include <QObject> +#include <QDBusMessage> +#include <QDBusContext> +#include <QDBusConnection> class MyObject: public QObject, protected QDBusContext { diff --git a/tests/auto/dbus/qdbusinterface/qdbusinterface.pro b/tests/auto/dbus/qdbusinterface/qdbusinterface.pro deleted file mode 100644 index bc9cf5ffaf..0000000000 --- a/tests/auto/dbus/qdbusinterface/qdbusinterface.pro +++ /dev/null @@ -1,6 +0,0 @@ -CONFIG += testcase -TARGET = tst_qdbusinterface -QT = core testlib -TEMPLATE = subdirs -qdbusinterface.depends = qmyserver -SUBDIRS = qmyserver qdbusinterface diff --git a/tests/auto/dbus/qdbusinterface/qdbusinterface/qdbusinterface.pro b/tests/auto/dbus/qdbusinterface/qdbusinterface/qdbusinterface.pro deleted file mode 100644 index 67709105a6..0000000000 --- a/tests/auto/dbus/qdbusinterface/qdbusinterface/qdbusinterface.pro +++ /dev/null @@ -1,14 +0,0 @@ -CONFIG += testcase -SOURCES += ../tst_qdbusinterface.cpp -HEADERS += ../myobject.h -TARGET = ../tst_qdbusinterface -DESTDIR = ./ - -QT = core core-private dbus dbus-private testlib - -qtConfig(dbus-linked) { - DEFINES += QT_LINKED_LIBDBUS - QMAKE_USE += dbus -} else { - SOURCES += ../../../../../src/dbus/qdbus_symbols.cpp -} diff --git a/tests/auto/dbus/qdbusinterface/qmyserver/.prev_CMakeLists.txt b/tests/auto/dbus/qdbusinterface/qmyserver/.prev_CMakeLists.txt deleted file mode 100644 index 9c898fecf6..0000000000 --- a/tests/auto/dbus/qdbusinterface/qmyserver/.prev_CMakeLists.txt +++ /dev/null @@ -1,14 +0,0 @@ -# Generated from qmyserver.pro. - -##################################################################### -## qmyserver_qdbusinterface Binary: -##################################################################### - -qt_add_executable(qmyserver_qdbusinterface - OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/" - SOURCES - ../myobject.h - qmyserver.cpp - PUBLIC_LIBRARIES - Qt::DBus -) diff --git a/tests/auto/dbus/qdbusinterface/qmyserver/CMakeLists.txt b/tests/auto/dbus/qdbusinterface/qmyserver/CMakeLists.txt index 916735bf59..55eb2c39cc 100644 --- a/tests/auto/dbus/qdbusinterface/qmyserver/CMakeLists.txt +++ b/tests/auto/dbus/qdbusinterface/qmyserver/CMakeLists.txt @@ -1,15 +1,16 @@ -# Generated from qmyserver.pro. +# Copyright (C) 2022 The Qt Company Ltd. +# SPDX-License-Identifier: BSD-3-Clause ##################################################################### ## qmyserver_qdbusinterface Binary: ##################################################################### -qt_add_executable(qmyserver_qdbusinterface +qt_internal_add_executable(qmyserver_qdbusinterface OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/" - NO_INSTALL # special case + NO_INSTALL SOURCES ../myobject.h qmyserver.cpp - PUBLIC_LIBRARIES + LIBRARIES Qt::DBus ) diff --git a/tests/auto/dbus/qdbusinterface/qmyserver/qmyserver.cpp b/tests/auto/dbus/qdbusinterface/qmyserver/qmyserver.cpp index 535d2f756b..5d8692d9a6 100644 --- a/tests/auto/dbus/qdbusinterface/qmyserver/qmyserver.cpp +++ b/tests/auto/dbus/qdbusinterface/qmyserver/qmyserver.cpp @@ -1,33 +1,9 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Copyright (C) 2016 Intel Corporation. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the test suite of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:GPL-EXCEPT$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3 as published by the Free Software -** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ -#include <QtCore/QtCore> -#include <QtDBus/QtDBus> +// Copyright (C) 2016 The Qt Company Ltd. +// Copyright (C) 2016 Intel Corporation. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only + +#include <QCoreApplication> +#include <QDBusServer> #include "../myobject.h" @@ -44,7 +20,7 @@ class MyServer : public QDBusServer, protected QDBusContext Q_CLASSINFO("D-Bus Interface", "org.qtproject.autotests.qmyserver") public: - MyServer(QObject* parent = 0) + MyServer(QObject *parent = nullptr) : QDBusServer(parent), m_conn("none") { diff --git a/tests/auto/dbus/qdbusinterface/qmyserver/qmyserver.pro b/tests/auto/dbus/qdbusinterface/qmyserver/qmyserver.pro deleted file mode 100644 index 406f3d7d36..0000000000 --- a/tests/auto/dbus/qdbusinterface/qmyserver/qmyserver.pro +++ /dev/null @@ -1,6 +0,0 @@ -SOURCES = qmyserver.cpp -HEADERS = ../myobject.h -TARGET = qmyserver_qdbusinterface -DESTDIR = ./ -QT = core dbus -CONFIG -= app_bundle diff --git a/tests/auto/dbus/qdbusinterface/tst_qdbusinterface.cpp b/tests/auto/dbus/qdbusinterface/tst_qdbusinterface.cpp index 481d40d00a..803ae4fa0f 100644 --- a/tests/auto/dbus/qdbusinterface/tst_qdbusinterface.cpp +++ b/tests/auto/dbus/qdbusinterface/tst_qdbusinterface.cpp @@ -1,44 +1,27 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the test suite of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:GPL-EXCEPT$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3 as published by the Free Software -** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ -/* -*- C++ -*- - */ - -#include <qcoreapplication.h> -#include <qmetatype.h> -#include <QtTest/QtTest> -#include <QtCore/qregularexpression.h> -#include <QtCore/qvariant.h> -#include <QtDBus/QtDBus> -#include <QtDBus/private/qdbus_symbols_p.h> -#include <qdebug.h> +// Copyright (C) 2016 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only + +#include <QTest> +#include <QDebug> +#include <QTestEventLoop> +#include <QCoreApplication> +#include <QMetaType> +#include <QRegularExpression> +#include <QVariant> +#include <QVersionNumber> +#include <QProcess> +#include <QTimer> +#include <QDBusInterface> +#include <QDBusConnectionInterface> +#include <QDBusVirtualObject> + +#include <private/qdbus_symbols_p.h> + #include "../qdbusmarshall/common.h" #include "myobject.h" +using namespace Qt::StringLiterals; + #define TEST_INTERFACE_NAME "org.qtproject.QtDBus.MyObject" #define TEST_SIGNAL_NAME "somethingHappened" @@ -217,6 +200,10 @@ private slots: void complexPropertyWritePeer(); void interactiveAuthorizationRequired(); + + void interfaceNameFallback_data(); + void interfaceNameFallback(); + private: QProcess proc; }; @@ -325,6 +312,13 @@ void tst_QDBusInterface::notValid() QVERIFY(!interface.isValid()); QVERIFY(!QMetaObject::invokeMethod(&interface, "ListNames", Qt::DirectConnection)); + + // With a connection, but empty/null service and path specified + QDBusConnection con = QDBusConnection::sessionBus(); + QVERIFY(con.isConnected()); + QDBusInterface iface({}, {}, {}, con); + QVERIFY(!iface.isValid()); + QVERIFY(!QMetaObject::invokeMethod(&interface, "ListNames", Qt::DirectConnection)); } void tst_QDBusInterface::notValidDerived() @@ -480,17 +474,17 @@ void tst_QDBusInterface::callMethod() QCOMPARE(reply.type(), QDBusMessage::ReplyMessage); // verify what the callee received - QCOMPARE(MyObject::callArgs.count(), 1); + QCOMPARE(MyObject::callArgs.size(), 1); QVariant v = MyObject::callArgs.at(0); QDBusVariant dv = qdbus_cast<QDBusVariant>(v); - QCOMPARE(dv.variant().type(), QVariant::String); + QCOMPARE(dv.variant().userType(), QMetaType::QString); QCOMPARE(dv.variant().toString(), QString("foo")); // verify reply - QCOMPARE(reply.arguments().count(), 1); + QCOMPARE(reply.arguments().size(), 1); v = reply.arguments().at(0); dv = qdbus_cast<QDBusVariant>(v); - QCOMPARE(dv.variant().type(), QVariant::String); + QCOMPARE(dv.variant().userType(), QMetaType::QString); QCOMPARE(dv.variant().toString(), QString("foo")); // call an INVOKABLE method @@ -499,17 +493,17 @@ void tst_QDBusInterface::callMethod() QCOMPARE(reply.type(), QDBusMessage::ReplyMessage); // verify what the callee received - QCOMPARE(MyObject::callArgs.count(), 1); + QCOMPARE(MyObject::callArgs.size(), 1); v = MyObject::callArgs.at(0); dv = qdbus_cast<QDBusVariant>(v); - QCOMPARE(dv.variant().type(), QVariant::String); + QCOMPARE(dv.variant().userType(), QMetaType::QString); QCOMPARE(dv.variant().toString(), QString("bar")); // verify reply - QCOMPARE(reply.arguments().count(), 1); + QCOMPARE(reply.arguments().size(), 1); v = reply.arguments().at(0); dv = qdbus_cast<QDBusVariant>(v); - QCOMPARE(dv.variant().type(), QVariant::String); + QCOMPARE(dv.variant().userType(), QMetaType::QString); QCOMPARE(dv.variant().toString(), QString("bar")); } @@ -527,10 +521,10 @@ void tst_QDBusInterface::invokeMethod() QCOMPARE(MyObject::callCount, 1); // verify what the callee received - QCOMPARE(MyObject::callArgs.count(), 1); + QCOMPARE(MyObject::callArgs.size(), 1); QVariant v = MyObject::callArgs.at(0); QDBusVariant dv = qdbus_cast<QDBusVariant>(v); - QCOMPARE(dv.variant().type(), QVariant::String); + QCOMPARE(dv.variant().userType(), QMetaType::QString); QCOMPARE(dv.variant().toString(), QString("foo")); // make the INVOKABLE call without a return type @@ -539,10 +533,10 @@ void tst_QDBusInterface::invokeMethod() QCOMPARE(MyObject::callCount, 2); // verify what the callee received - QCOMPARE(MyObject::callArgs.count(), 1); + QCOMPARE(MyObject::callArgs.size(), 1); v = MyObject::callArgs.at(0); dv = qdbus_cast<QDBusVariant>(v); - QCOMPARE(dv.variant().type(), QVariant::String); + QCOMPARE(dv.variant().userType(), QMetaType::QString); QCOMPARE(dv.variant().toString(), QString("bar")); } @@ -561,10 +555,10 @@ void tst_QDBusInterface::invokeMethodWithReturn() QCOMPARE(MyObject::callCount, 1); // verify what the callee received - QCOMPARE(MyObject::callArgs.count(), 1); + QCOMPARE(MyObject::callArgs.size(), 1); QVariant v = MyObject::callArgs.at(0); QDBusVariant dv = qdbus_cast<QDBusVariant>(v); - QCOMPARE(dv.variant().type(), QVariant::String); + QCOMPARE(dv.variant().userType(), QMetaType::QString); QCOMPARE(dv.variant().toString(), arg.variant().toString()); // verify that we got the reply as expected @@ -576,10 +570,10 @@ void tst_QDBusInterface::invokeMethodWithReturn() QCOMPARE(MyObject::callCount, 2); // verify what the callee received - QCOMPARE(MyObject::callArgs.count(), 1); + QCOMPARE(MyObject::callArgs.size(), 1); v = MyObject::callArgs.at(0); dv = qdbus_cast<QDBusVariant>(v); - QCOMPARE(dv.variant().type(), QVariant::String); + QCOMPARE(dv.variant().userType(), QMetaType::QString); QCOMPARE(dv.variant().toString(), arg2.variant().toString()); // verify that we got the reply as expected @@ -605,15 +599,15 @@ void tst_QDBusInterface::invokeMethodWithMultiReturn() QCOMPARE(MyObject::callCount, 1); // verify what the callee received - QCOMPARE(MyObject::callArgs.count(), 2); + QCOMPARE(MyObject::callArgs.size(), 2); QVariant v = MyObject::callArgs.at(0); QDBusVariant dv = qdbus_cast<QDBusVariant>(v); - QCOMPARE(dv.variant().type(), QVariant::String); + QCOMPARE(dv.variant().userType(), QMetaType::QString); QCOMPARE(dv.variant().toString(), arg.variant().toString()); v = MyObject::callArgs.at(1); dv = qdbus_cast<QDBusVariant>(v); - QCOMPARE(dv.variant().type(), QVariant::String); + QCOMPARE(dv.variant().userType(), QMetaType::QString); QCOMPARE(dv.variant().toString(), arg2.variant().toString()); // verify that we got the replies as expected @@ -630,15 +624,15 @@ void tst_QDBusInterface::invokeMethodWithMultiReturn() QCOMPARE(MyObject::callCount, 2); // verify what the callee received - QCOMPARE(MyObject::callArgs.count(), 2); + QCOMPARE(MyObject::callArgs.size(), 2); v = MyObject::callArgs.at(0); dv = qdbus_cast<QDBusVariant>(v); - QCOMPARE(dv.variant().type(), QVariant::String); + QCOMPARE(dv.variant().userType(), QMetaType::QString); QCOMPARE(dv.variant().toString(), arg3.variant().toString()); v = MyObject::callArgs.at(1); dv = qdbus_cast<QDBusVariant>(v); - QCOMPARE(dv.variant().type(), QVariant::String); + QCOMPARE(dv.variant().userType(), QMetaType::QString); QCOMPARE(dv.variant().toString(), arg4.variant().toString()); // verify that we got the replies as expected @@ -661,7 +655,7 @@ void tst_QDBusInterface::invokeMethodWithComplexReturn() QCOMPARE(MyObject::callCount, 1); // verify what the callee received - QCOMPARE(MyObject::callArgs.count(), 1); + QCOMPARE(MyObject::callArgs.size(), 1); QVariant v = MyObject::callArgs.at(0); QCOMPARE(v.userType(), qMetaTypeId<QDBusArgument>()); QCOMPARE(qdbus_cast<QList<int> >(v), arg); @@ -675,7 +669,7 @@ void tst_QDBusInterface::invokeMethodWithComplexReturn() QCOMPARE(MyObject::callCount, 2); // verify what the callee received - QCOMPARE(MyObject::callArgs.count(), 1); + QCOMPARE(MyObject::callArgs.size(), 1); v = MyObject::callArgs.at(0); QCOMPARE(v.userType(), qMetaTypeId<QDBusArgument>()); QCOMPARE(qdbus_cast<QList<int> >(v), arg2); @@ -715,17 +709,17 @@ void tst_QDBusInterface::callMethodPeer() // verify what the callee received QVariantList callArgs = callArgsPeer(); - QCOMPARE(callArgs.count(), 1); + QCOMPARE(callArgs.size(), 1); QVariant v = callArgs.at(0); QDBusVariant dv = qdbus_cast<QDBusVariant>(v); - QCOMPARE(dv.variant().type(), QVariant::String); + QCOMPARE(dv.variant().userType(), QMetaType::QString); QCOMPARE(dv.variant().toString(), QString("foo")); // verify reply - QCOMPARE(reply.arguments().count(), 1); + QCOMPARE(reply.arguments().size(), 1); v = reply.arguments().at(0); dv = qdbus_cast<QDBusVariant>(v); - QCOMPARE(dv.variant().type(), QVariant::String); + QCOMPARE(dv.variant().userType(), QMetaType::QString); QCOMPARE(dv.variant().toString(), QString("foo")); // call an INVOKABLE method @@ -735,17 +729,17 @@ void tst_QDBusInterface::callMethodPeer() // verify what the callee received callArgs = callArgsPeer(); - QCOMPARE(callArgs.count(), 1); + QCOMPARE(callArgs.size(), 1); v = callArgs.at(0); dv = qdbus_cast<QDBusVariant>(v); - QCOMPARE(dv.variant().type(), QVariant::String); + QCOMPARE(dv.variant().userType(), QMetaType::QString); QCOMPARE(dv.variant().toString(), QString("bar")); // verify reply - QCOMPARE(reply.arguments().count(), 1); + QCOMPARE(reply.arguments().size(), 1); v = reply.arguments().at(0); dv = qdbus_cast<QDBusVariant>(v); - QCOMPARE(dv.variant().type(), QVariant::String); + QCOMPARE(dv.variant().userType(), QMetaType::QString); QCOMPARE(dv.variant().toString(), QString("bar")); } @@ -764,10 +758,10 @@ void tst_QDBusInterface::invokeMethodPeer() // verify what the callee received QVariantList callArgs = callArgsPeer(); - QCOMPARE(callArgs.count(), 1); + QCOMPARE(callArgs.size(), 1); QVariant v = callArgs.at(0); QDBusVariant dv = qdbus_cast<QDBusVariant>(v); - QCOMPARE(dv.variant().type(), QVariant::String); + QCOMPARE(dv.variant().userType(), QMetaType::QString); QCOMPARE(dv.variant().toString(), QString("foo")); // make the INVOKABLE call without a return type @@ -777,10 +771,10 @@ void tst_QDBusInterface::invokeMethodPeer() // verify what the callee received callArgs = callArgsPeer(); - QCOMPARE(callArgs.count(), 1); + QCOMPARE(callArgs.size(), 1); v = callArgs.at(0); dv = qdbus_cast<QDBusVariant>(v); - QCOMPARE(dv.variant().type(), QVariant::String); + QCOMPARE(dv.variant().userType(), QMetaType::QString); QCOMPARE(dv.variant().toString(), QString("bar")); } @@ -800,10 +794,10 @@ void tst_QDBusInterface::invokeMethodWithReturnPeer() // verify what the callee received QVariantList callArgs = callArgsPeer(); - QCOMPARE(callArgs.count(), 1); + QCOMPARE(callArgs.size(), 1); QVariant v = callArgs.at(0); QDBusVariant dv = qdbus_cast<QDBusVariant>(v); - QCOMPARE(dv.variant().type(), QVariant::String); + QCOMPARE(dv.variant().userType(), QMetaType::QString); QCOMPARE(dv.variant().toString(), arg.variant().toString()); // verify that we got the reply as expected @@ -816,10 +810,10 @@ void tst_QDBusInterface::invokeMethodWithReturnPeer() // verify what the callee received callArgs = callArgsPeer(); - QCOMPARE(callArgs.count(), 1); + QCOMPARE(callArgs.size(), 1); v = callArgs.at(0); dv = qdbus_cast<QDBusVariant>(v); - QCOMPARE(dv.variant().type(), QVariant::String); + QCOMPARE(dv.variant().userType(), QMetaType::QString); QCOMPARE(dv.variant().toString(), arg2.variant().toString()); // verify that we got the reply as expected @@ -846,15 +840,15 @@ void tst_QDBusInterface::invokeMethodWithMultiReturnPeer() // verify what the callee received QVariantList callArgs = callArgsPeer(); - QCOMPARE(callArgs.count(), 2); + QCOMPARE(callArgs.size(), 2); QVariant v = callArgs.at(0); QDBusVariant dv = qdbus_cast<QDBusVariant>(v); - QCOMPARE(dv.variant().type(), QVariant::String); + QCOMPARE(dv.variant().userType(), QMetaType::QString); QCOMPARE(dv.variant().toString(), arg.variant().toString()); v = callArgs.at(1); dv = qdbus_cast<QDBusVariant>(v); - QCOMPARE(dv.variant().type(), QVariant::String); + QCOMPARE(dv.variant().userType(), QMetaType::QString); QCOMPARE(dv.variant().toString(), arg2.variant().toString()); // verify that we got the replies as expected @@ -872,15 +866,15 @@ void tst_QDBusInterface::invokeMethodWithMultiReturnPeer() // verify what the callee received callArgs = callArgsPeer(); - QCOMPARE(callArgs.count(), 2); + QCOMPARE(callArgs.size(), 2); v = callArgs.at(0); dv = qdbus_cast<QDBusVariant>(v); - QCOMPARE(dv.variant().type(), QVariant::String); + QCOMPARE(dv.variant().userType(), QMetaType::QString); QCOMPARE(dv.variant().toString(), arg3.variant().toString()); v = callArgs.at(1); dv = qdbus_cast<QDBusVariant>(v); - QCOMPARE(dv.variant().type(), QVariant::String); + QCOMPARE(dv.variant().userType(), QMetaType::QString); QCOMPARE(dv.variant().toString(), arg4.variant().toString()); // verify that we got the replies as expected @@ -904,7 +898,7 @@ void tst_QDBusInterface::invokeMethodWithComplexReturnPeer() // verify what the callee received QVariantList callArgs = callArgsPeer(); - QCOMPARE(callArgs.count(), 1); + QCOMPARE(callArgs.size(), 1); QVariant v = callArgs.at(0); QCOMPARE(v.userType(), qMetaTypeId<QDBusArgument>()); QCOMPARE(qdbus_cast<QList<int> >(v), arg); @@ -919,7 +913,7 @@ void tst_QDBusInterface::invokeMethodWithComplexReturnPeer() // verify what the callee received callArgs = callArgsPeer(); - QCOMPARE(callArgs.count(), 1); + QCOMPARE(callArgs.size(), 1); v = callArgs.at(0); QCOMPARE(v.userType(), qMetaTypeId<QDBusArgument>()); QCOMPARE(qdbus_cast<QList<int> >(v), arg2); @@ -1021,7 +1015,7 @@ void tst_QDBusInterface::propertyRead() QVariant v = iface.property("prop1"); QVERIFY(v.isValid()); - QCOMPARE(v.userType(), int(QVariant::Int)); + QCOMPARE(v.userType(), int(QMetaType::Int)); QCOMPARE(v.toInt(), arg); QCOMPARE(MyObject::callCount, 1); } @@ -1084,7 +1078,7 @@ void tst_QDBusInterface::propertyReadPeer() QVariant v = iface.property("prop1"); QVERIFY(v.isValid()); - QCOMPARE(v.userType(), int(QVariant::Int)); + QCOMPARE(v.userType(), int(QMetaType::Int)); QCOMPARE(v.toInt(), arg); QCOMPARE(callCountPeer(), 1); } @@ -1159,6 +1153,60 @@ void tst_QDBusInterface::interactiveAuthorizationRequired() QVERIFY(reply.arguments().at(0).toBool()); } +class TestObject : public QObject +{ + Q_OBJECT +public Q_SLOTS: + void test() { } +}; + +void tst_QDBusInterface::interfaceNameFallback_data() +{ + QTest::addColumn<QString>("appName"); + QTest::addColumn<QString>("orgDomain"); + QTest::addColumn<QString>("interfaceName"); + + QTest::addRow("empty.empty") << "" << "" << "local.tst_qdbusinterface"; + QTest::addRow("with-domain") << "" << "qt-project.org" << "org.qt_project.tst_qdbusinterface"; + QTest::addRow("numbers") << "prog42" << "7-zip.org" << "org._7_zip.prog42"; + QTest::addRow("non-latin1") << u"\u00e6"_s << u"\u00e5"_s << "xn__5ca.xn__6ca"; +} + +void tst_QDBusInterface::interfaceNameFallback() +{ + QFETCH(QString, appName); + QFETCH(QString, orgDomain); + QFETCH(QString, interfaceName); + + auto app = QCoreApplication::instance(); + auto oldApplicationName = app->applicationName(); + auto oldOrganizationDomain = app->organizationDomain(); + + app->setApplicationName(appName); + app->setOrganizationDomain(orgDomain); + auto obj = new TestObject; + + auto cleanup = qScopeGuard([&] { + obj->deleteLater(); + app->setApplicationName(oldApplicationName); + app->setOrganizationDomain(oldOrganizationDomain); + }); + + auto con = QDBusConnection::sessionBus(); + const QString path = "/interfaceNameFallback"_L1; + + QVERIFY(con.registerObject(path, obj, QDBusConnection::ExportAllContents)); + + QDBusInterface interface(con.baseService(), path, "org.freedesktop.DBus.Introspectable"_L1, + con); + auto reply = interface.call("Introspect"); + + QCOMPARE(reply.type(), QDBusMessage::ReplyMessage); + QString tag = u"<interface name=\"%1.TestObject\">"_s.arg(interfaceName); + auto result = reply.arguments().at(0).toString(); + QVERIFY2(result.contains(tag), qUtf8Printable(u"Tag '%1' not found\n%2"_s.arg(tag, result))); +} + QTEST_MAIN(tst_QDBusInterface) #include "tst_qdbusinterface.moc" |