summaryrefslogtreecommitdiffstats
path: root/tests/auto/dbus
diff options
context:
space:
mode:
Diffstat (limited to 'tests/auto/dbus')
-rw-r--r--tests/auto/dbus/qdbusabstractadaptor/qmyserver/qmyserver.cpp23
-rw-r--r--tests/auto/dbus/qdbusabstractadaptor/tst_qdbusabstractadaptor.cpp10
-rw-r--r--tests/auto/dbus/qdbusabstractinterface/qpinger/qpinger.cpp22
-rw-r--r--tests/auto/dbus/qdbusabstractinterface/tst_qdbusabstractinterface.cpp23
-rw-r--r--tests/auto/dbus/qdbusconnection/tst_qdbusconnection.cpp10
-rw-r--r--tests/auto/dbus/qdbusinterface/qmyserver/qmyserver.cpp22
-rw-r--r--tests/auto/dbus/qdbusinterface/tst_qdbusinterface.cpp9
-rw-r--r--tests/auto/dbus/qdbusmarshall/common.h4
-rw-r--r--tests/auto/dbus/qdbusmarshall/qpong/qpong.cpp5
-rw-r--r--tests/auto/dbus/qdbusmarshall/test/test.pro9
-rw-r--r--tests/auto/dbus/qdbusmarshall/tst_qdbusmarshall.cpp82
-rw-r--r--tests/auto/dbus/qdbustype/qdbustype.pro9
-rw-r--r--tests/auto/dbus/qdbustype/tst_qdbustype.cpp26
13 files changed, 172 insertions, 82 deletions
diff --git a/tests/auto/dbus/qdbusabstractadaptor/qmyserver/qmyserver.cpp b/tests/auto/dbus/qdbusabstractadaptor/qmyserver/qmyserver.cpp
index c680d93dab..2f39857d2d 100644
--- a/tests/auto/dbus/qdbusabstractadaptor/qmyserver/qmyserver.cpp
+++ b/tests/auto/dbus/qdbusabstractadaptor/qmyserver/qmyserver.cpp
@@ -72,9 +72,17 @@ public slots:
return QDBusServer::address();
}
- bool isConnected() const
+ void waitForConnected()
{
- return m_conn.isConnected();
+ if (callPendingReply.type() != QDBusMessage::InvalidMessage) {
+ sendErrorReply(QDBusError::NotSupported, "One call already pending!");
+ return;
+ }
+ if (m_conn.isConnected())
+ return;
+ // not connected, we'll reply later
+ setDelayedReply(true);
+ callPendingReply = message();
}
Q_NOREPLY void requestSync(const QString &seq)
@@ -133,6 +141,11 @@ public slots:
valueSpy.clear();
}
+ void quit()
+ {
+ qApp->quit();
+ }
+
signals:
Q_SCRIPTABLE void syncReceived(const QString &sequence);
@@ -141,10 +154,16 @@ private slots:
{
m_conn = con;
con.registerObject(objectPath, this, QDBusConnection::ExportScriptableSignals);
+
+ if (callPendingReply.type() != QDBusMessage::InvalidMessage) {
+ QDBusConnection::sessionBus().send(callPendingReply.createReply());
+ callPendingReply = QDBusMessage();
+ }
}
private:
QDBusConnection m_conn;
+ QDBusMessage callPendingReply;
MyObject* obj;
};
diff --git a/tests/auto/dbus/qdbusabstractadaptor/tst_qdbusabstractadaptor.cpp b/tests/auto/dbus/qdbusabstractadaptor/tst_qdbusabstractadaptor.cpp
index 971c939aad..b7ecdef16e 100644
--- a/tests/auto/dbus/qdbusabstractadaptor/tst_qdbusabstractadaptor.cpp
+++ b/tests/auto/dbus/qdbusabstractadaptor/tst_qdbusabstractadaptor.cpp
@@ -496,6 +496,7 @@ void tst_QDBusAbstractAdaptor::initTestCase()
#else
# define EXE ""
#endif
+ proc.setProcessChannelMode(QProcess::ForwardedErrorChannel);
proc.start(QFINDTESTDATA("qmyserver/qmyserver" EXE));
QVERIFY2(proc.waitForStarted(), qPrintable(proc.errorString()));
QVERIFY(proc.waitForReadyRead());
@@ -513,16 +514,17 @@ void tst_QDBusAbstractAdaptor::initTestCase()
QDBusConnection peercon = QDBusConnection::connectToPeer(address, "peer");
QVERIFY(peercon.isConnected());
- QDBusMessage req2 = QDBusMessage::createMethodCall(serviceName, objectPath, interfaceName, "isConnected");
+ QDBusMessage req2 = QDBusMessage::createMethodCall(serviceName, objectPath, interfaceName, "waitForConnected");
QDBusMessage rpl2 = QDBusConnection::sessionBus().call(req2);
- QVERIFY(rpl2.type() == QDBusMessage::ReplyMessage);
- QVERIFY(rpl2.arguments().at(0).toBool());
+ QVERIFY2(rpl2.type() == QDBusMessage::ReplyMessage, rpl2.errorMessage().toLatin1());
}
void tst_QDBusAbstractAdaptor::cleanupTestCase()
{
+ QDBusMessage msg = QDBusMessage::createMethodCall(serviceName, objectPath, interfaceName, "quit");
+ QDBusConnection::sessionBus().call(msg);
+ proc.waitForFinished(200);
proc.close();
- proc.kill();
}
void tst_QDBusAbstractAdaptor::methodCalls_data()
diff --git a/tests/auto/dbus/qdbusabstractinterface/qpinger/qpinger.cpp b/tests/auto/dbus/qdbusabstractinterface/qpinger/qpinger.cpp
index 49462d388c..e681d06102 100644
--- a/tests/auto/dbus/qdbusabstractinterface/qpinger/qpinger.cpp
+++ b/tests/auto/dbus/qdbusabstractinterface/qpinger/qpinger.cpp
@@ -59,9 +59,17 @@ public slots:
return QDBusServer::address();
}
- bool isConnected() const
+ void waitForConnected()
{
- return m_conn.isConnected();
+ if (callPendingReply.type() != QDBusMessage::InvalidMessage) {
+ sendErrorReply(QDBusError::NotSupported, "One call already pending!");
+ return;
+ }
+ if (m_conn.isConnected())
+ return;
+ // not connected, we'll reply later
+ setDelayedReply(true);
+ callPendingReply = message();
}
void reset()
@@ -87,16 +95,26 @@ public slots:
emit targetObj.complexSignal(reg);
}
+ void quit()
+ {
+ qApp->quit();
+ }
+
private slots:
void handleConnection(const QDBusConnection& con)
{
m_conn = con;
m_conn.registerObject("/", &targetObj, QDBusConnection::ExportScriptableContents);
+ if (callPendingReply.type() != QDBusMessage::InvalidMessage) {
+ QDBusConnection::sessionBus().send(callPendingReply.createReply());
+ callPendingReply = QDBusMessage();
+ }
}
private:
Interface targetObj;
QDBusConnection m_conn;
+ QDBusMessage callPendingReply;
};
int main(int argc, char *argv[])
diff --git a/tests/auto/dbus/qdbusabstractinterface/tst_qdbusabstractinterface.cpp b/tests/auto/dbus/qdbusabstractinterface/tst_qdbusabstractinterface.cpp
index 0cb29d121b..0b33f9b1cf 100644
--- a/tests/auto/dbus/qdbusabstractinterface/tst_qdbusabstractinterface.cpp
+++ b/tests/auto/dbus/qdbusabstractinterface/tst_qdbusabstractinterface.cpp
@@ -236,6 +236,7 @@ void tst_QDBusAbstractInterface::initTestCase()
#else
# define EXE ""
#endif
+ proc.setProcessChannelMode(QProcess::ForwardedErrorChannel);
proc.start(QFINDTESTDATA("qpinger/qpinger" EXE));
QVERIFY2(proc.waitForStarted(), qPrintable(proc.errorString()));
QVERIFY(proc.waitForReadyRead());
@@ -252,19 +253,10 @@ void tst_QDBusAbstractInterface::initTestCase()
void tst_QDBusAbstractInterface::cleanupTestCase()
{
- // Kill peer, resetting the object exported by a separate process
-#ifdef Q_OS_WIN
- proc.kill(); // non-GUI processes don't respond to QProcess::terminate()
-#else
- proc.terminate();
-#endif
- QVERIFY(proc.waitForFinished() || proc.state() == QProcess::NotRunning);
-
- // Wait until the service is certainly not registered
- QDBusConnection con = QDBusConnection::sessionBus();
- if (con.isConnected()) {
- QTRY_VERIFY(!con.interface()->isServiceRegistered(serviceName));
- }
+ QDBusMessage msg = QDBusMessage::createMethodCall(serviceName, objectPath, interfaceName, "quit");
+ QDBusConnection::sessionBus().call(msg);
+ proc.waitForFinished(200);
+ proc.close();
}
void tst_QDBusAbstractInterface::init()
@@ -276,10 +268,9 @@ void tst_QDBusAbstractInterface::init()
QDBusConnection peercon = QDBusConnection::connectToPeer(peerAddress, "peer");
QVERIFY(peercon.isConnected());
- QDBusMessage req2 = QDBusMessage::createMethodCall(serviceName, objectPath, interfaceName, "isConnected");
+ QDBusMessage req2 = QDBusMessage::createMethodCall(serviceName, objectPath, interfaceName, "waitForConnected");
QDBusMessage rpl2 = con.call(req2);
- QVERIFY(rpl2.type() == QDBusMessage::ReplyMessage);
- QVERIFY(rpl2.arguments().at(0).toBool());
+ QVERIFY2(rpl2.type() == QDBusMessage::ReplyMessage, rpl2.errorMessage().toLatin1());
}
void tst_QDBusAbstractInterface::cleanup()
diff --git a/tests/auto/dbus/qdbusconnection/tst_qdbusconnection.cpp b/tests/auto/dbus/qdbusconnection/tst_qdbusconnection.cpp
index 7e6e742e28..70794a52f5 100644
--- a/tests/auto/dbus/qdbusconnection/tst_qdbusconnection.cpp
+++ b/tests/auto/dbus/qdbusconnection/tst_qdbusconnection.cpp
@@ -246,7 +246,7 @@ void tst_QDBusConnection::connectToBus()
QDBusConnection con2("foo");
QVERIFY(!con2.isConnected());
- QVERIFY(!con2.lastError().isValid());
+ QVERIFY(con2.lastError().isValid());
con2 = con;
QVERIFY(con.isConnected());
@@ -274,7 +274,7 @@ void tst_QDBusConnection::connectToBus()
{
QDBusConnection con("bubu");
QVERIFY(!con.isConnected());
- QVERIFY(!con.lastError().isValid());
+ QVERIFY(con.lastError().isValid());
}
QByteArray address = qgetenv("DBUS_SESSION_BUS_ADDRESS");
@@ -294,6 +294,7 @@ void tst_QDBusConnection::connectToPeer()
"", "newconn");
QVERIFY(!con.isConnected());
QVERIFY(con.lastError().isValid());
+ QDBusConnection::disconnectFromPeer("newconn");
}
QDBusServer server;
@@ -303,6 +304,7 @@ void tst_QDBusConnection::connectToPeer()
"unix:abstract=/tmp/dbus-XXXXXXXXXX,guid=00000000000000000000000000000000", "newconn2");
QVERIFY(!con.isConnected());
QVERIFY(con.lastError().isValid());
+ QDBusConnection::disconnectFromPeer("newconn2");
}
{
@@ -314,7 +316,7 @@ void tst_QDBusConnection::connectToPeer()
QDBusConnection con2("foo");
QVERIFY(!con2.isConnected());
- QVERIFY(!con2.lastError().isValid());
+ QVERIFY(con2.lastError().isValid());
con2 = con;
QVERIFY(con.isConnected());
@@ -342,7 +344,7 @@ void tst_QDBusConnection::connectToPeer()
{
QDBusConnection con("bubu");
QVERIFY(!con.isConnected());
- QVERIFY(!con.lastError().isValid());
+ QVERIFY(con.lastError().isValid());
}
}
diff --git a/tests/auto/dbus/qdbusinterface/qmyserver/qmyserver.cpp b/tests/auto/dbus/qdbusinterface/qmyserver/qmyserver.cpp
index 7a22fe90ad..8da9068541 100644
--- a/tests/auto/dbus/qdbusinterface/qmyserver/qmyserver.cpp
+++ b/tests/auto/dbus/qdbusinterface/qmyserver/qmyserver.cpp
@@ -63,9 +63,17 @@ public slots:
return QDBusServer::address();
}
- bool isConnected() const
+ void waitForConnected()
{
- return m_conn.isConnected();
+ if (callPendingReply.type() != QDBusMessage::InvalidMessage) {
+ sendErrorReply(QDBusError::NotSupported, "One call already pending!");
+ return;
+ }
+ if (m_conn.isConnected())
+ return;
+ // not connected, we'll reply later
+ setDelayedReply(true);
+ callPendingReply = message();
}
void emitSignal(const QString &interface, const QString &name, const QString &arg)
@@ -88,7 +96,6 @@ public slots:
QVariantList callArgs()
{
- qDebug() << "callArgs" << MyObject::callArgs.count();
return MyObject::callArgs;
}
@@ -112,6 +119,10 @@ public slots:
return obj.m_complexProp;
}
+ void quit()
+ {
+ qApp->quit();
+ }
private slots:
void handleConnection(const QDBusConnection& con)
@@ -120,10 +131,15 @@ private slots:
m_conn.registerObject("/", &obj, QDBusConnection::ExportAllProperties
| QDBusConnection::ExportAllSlots
| QDBusConnection::ExportAllInvokables);
+ if (callPendingReply.type() != QDBusMessage::InvalidMessage) {
+ QDBusConnection::sessionBus().send(callPendingReply.createReply());
+ callPendingReply = QDBusMessage();
+ }
}
private:
QDBusConnection m_conn;
+ QDBusMessage callPendingReply;
MyObject obj;
};
diff --git a/tests/auto/dbus/qdbusinterface/tst_qdbusinterface.cpp b/tests/auto/dbus/qdbusinterface/tst_qdbusinterface.cpp
index 04992c9f28..fce5868980 100644
--- a/tests/auto/dbus/qdbusinterface/tst_qdbusinterface.cpp
+++ b/tests/auto/dbus/qdbusinterface/tst_qdbusinterface.cpp
@@ -271,6 +271,7 @@ void tst_QDBusInterface::initTestCase()
#else
# define EXE ""
#endif
+ proc.setProcessChannelMode(QProcess::ForwardedErrorChannel);
proc.start(QFINDTESTDATA("qmyserver/qmyserver" EXE));
QVERIFY2(proc.waitForStarted(), qPrintable(proc.errorString()));
QVERIFY(proc.waitForReadyRead());
@@ -289,16 +290,18 @@ void tst_QDBusInterface::initTestCase()
QDBusConnection peercon = QDBusConnection::connectToPeer(address, "peer");
QVERIFY(peercon.isConnected());
- QDBusMessage req2 = QDBusMessage::createMethodCall(serviceName, objectPath, interfaceName, "isConnected");
+ QDBusMessage req2 = QDBusMessage::createMethodCall(serviceName, objectPath, interfaceName, "waitForConnected");
QDBusMessage rpl2 = con.call(req2);
QVERIFY(rpl2.type() == QDBusMessage::ReplyMessage);
- QVERIFY(rpl2.arguments().at(0).toBool());
+ QVERIFY2(rpl2.type() == QDBusMessage::ReplyMessage, rpl2.errorMessage().toLatin1());
}
void tst_QDBusInterface::cleanupTestCase()
{
+ QDBusMessage msg = QDBusMessage::createMethodCall(serviceName, objectPath, interfaceName, "quit");
+ QDBusConnection::sessionBus().call(msg);
+ proc.waitForFinished(200);
proc.close();
- proc.kill();
}
void tst_QDBusInterface::notConnected()
diff --git a/tests/auto/dbus/qdbusmarshall/common.h b/tests/auto/dbus/qdbusmarshall/common.h
index 76fe0e4bfb..323b54a137 100644
--- a/tests/auto/dbus/qdbusmarshall/common.h
+++ b/tests/auto/dbus/qdbusmarshall/common.h
@@ -30,7 +30,7 @@
** $QT_END_LICENSE$
**
****************************************************************************/
-#include <math.h> // isnan
+#include <qmath.h> // qIsNan
#include <qvariant.h>
#ifdef Q_OS_UNIX
@@ -320,7 +320,7 @@ bool compare(const QVariant &v1, const QVariant &v2);
bool compare(double d1, double d2)
{
- if (isnan(d1) && isnan(d2))
+ if (qIsNaN(d1) && qIsNaN(d2))
return true;
return d1 == d2;
}
diff --git a/tests/auto/dbus/qdbusmarshall/qpong/qpong.cpp b/tests/auto/dbus/qdbusmarshall/qpong/qpong.cpp
index bb8aab3d21..11cd4f05ce 100644
--- a/tests/auto/dbus/qdbusmarshall/qpong/qpong.cpp
+++ b/tests/auto/dbus/qdbusmarshall/qpong/qpong.cpp
@@ -49,6 +49,11 @@ public slots:
if (!QDBusConnection::sessionBus().send(msg.createReply(msg.arguments())))
exit(1);
}
+
+ void quit()
+ {
+ qApp->quit();
+ }
};
int main(int argc, char *argv[])
diff --git a/tests/auto/dbus/qdbusmarshall/test/test.pro b/tests/auto/dbus/qdbusmarshall/test/test.pro
index 658cc52fde..4999080453 100644
--- a/tests/auto/dbus/qdbusmarshall/test/test.pro
+++ b/tests/auto/dbus/qdbusmarshall/test/test.pro
@@ -5,8 +5,13 @@ DESTDIR = ./
QT = core-private dbus-private testlib
-LIBS += $$QT_LIBS_DBUS
-QMAKE_CXXFLAGS += $$QT_CFLAGS_DBUS
+contains(QT_CONFIG, dbus-linked) {
+ DEFINES += QT_LINKED_LIBDBUS
+ LIBS += $$QT_LIBS_DBUS
+ QMAKE_CXXFLAGS += $$QT_CFLAGS_DBUS
+} else {
+ SOURCES += ../../../../../src/dbus/qdbus_symbols.cpp
+}
DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0
macx:CONFIG += insignificant_test # QTBUG-37469
diff --git a/tests/auto/dbus/qdbusmarshall/tst_qdbusmarshall.cpp b/tests/auto/dbus/qdbusmarshall/tst_qdbusmarshall.cpp
index 4d12522a68..6507b34c97 100644
--- a/tests/auto/dbus/qdbusmarshall/tst_qdbusmarshall.cpp
+++ b/tests/auto/dbus/qdbusmarshall/tst_qdbusmarshall.cpp
@@ -37,7 +37,8 @@
#include "common.h"
#include <limits>
-#include <dbus/dbus.h>
+#include <QtDBus/private/qdbusutil_p.h>
+#include <QtDBus/private/qdbusconnection_p.h>
#define QT_LINKED_LIBDBUS
#include <QtDBus/private/qdbusutil_p.h>
@@ -136,6 +137,7 @@ void tst_QDBusMarshall::initTestCase()
#else
# define EXE ""
#endif
+ proc.setProcessChannelMode(QProcess::ForwardedErrorChannel);
proc.start(QFINDTESTDATA("qpong/qpong" EXE));
QVERIFY2(proc.waitForStarted(), qPrintable(proc.errorString()));
QVERIFY(proc.waitForReadyRead());
@@ -143,9 +145,10 @@ void tst_QDBusMarshall::initTestCase()
void tst_QDBusMarshall::cleanupTestCase()
{
- proc.close();
- proc.terminate();
+ QDBusMessage msg = QDBusMessage::createMethodCall(serviceName, objectPath, interfaceName, "quit");
+ QDBusConnection::sessionBus().call(msg);
proc.waitForFinished(200);
+ proc.close();
}
int tst_QDBusMarshall::fileDescriptorForTest()
@@ -1031,23 +1034,31 @@ struct DisconnectRawDBus {
{
if (!connection)
return;
- dbus_connection_close(connection);
- dbus_connection_unref(connection);
+ q_dbus_connection_close(connection);
+ q_dbus_connection_unref(connection);
+ }
+};
+struct UnrefDBusMessage
+{
+ static void cleanup(DBusMessage *type)
+ {
+ if (!type) return;
+ q_dbus_message_unref(type);
}
};
-template <typename T, void (*unref)(T *)> struct GenericUnref
+struct UnrefDBusPendingCall
{
- static void cleanup(T *type)
+ static void cleanup(DBusPendingCall *type)
{
if (!type) return;
- unref(type);
+ q_dbus_pending_call_unref(type);
}
};
// use these scoped types to avoid memory leaks if QVERIFY or QCOMPARE fails
typedef QScopedPointer<DBusConnection, DisconnectRawDBus> ScopedDBusConnection;
-typedef QScopedPointer<DBusMessage, GenericUnref<DBusMessage, dbus_message_unref> > ScopedDBusMessage;
-typedef QScopedPointer<DBusPendingCall, GenericUnref<DBusPendingCall, dbus_pending_call_unref> > ScopedDBusPendingCall;
+typedef QScopedPointer<DBusMessage, UnrefDBusMessage> ScopedDBusMessage;
+typedef QScopedPointer<DBusPendingCall, UnrefDBusPendingCall> ScopedDBusPendingCall;
template <typename T> struct SetResetValue
{
@@ -1072,12 +1083,12 @@ void tst_QDBusMarshall::receiveUnknownType()
// this needs to be implemented in raw
// open a new connection to the bus daemon
DBusError error;
- dbus_error_init(&error);
- ScopedDBusConnection rawcon(dbus_bus_get_private(DBUS_BUS_SESSION, &error));
+ q_dbus_error_init(&error);
+ ScopedDBusConnection rawcon(q_dbus_bus_get_private(DBUS_BUS_SESSION, &error));
QVERIFY2(rawcon.data(), error.name);
// check if this bus supports passing file descriptors
- if (!dbus_connection_can_send_type(rawcon.data(), DBUS_TYPE_UNIX_FD))
+ if (!q_dbus_connection_can_send_type(rawcon.data(), DBUS_TYPE_UNIX_FD))
QSKIP("Your session bus does not allow sending Unix file descriptors");
// make sure this QDBusConnection won't handle Unix file descriptors
@@ -1088,18 +1099,20 @@ void tst_QDBusMarshall::receiveUnknownType()
// create a call back to us containing a file descriptor
QDBusMessageSpy spy;
con.registerObject("/spyObject", &spy, QDBusConnection::ExportAllSlots);
- ScopedDBusMessage msg(dbus_message_new_method_call(con.baseService().toLatin1(), "/spyObject", NULL, "theSlot"));
+ ScopedDBusMessage msg(q_dbus_message_new_method_call(con.baseService().toLatin1(), "/spyObject", NULL, "theSlot"));
int fd = fileno(stdout);
- dbus_message_append_args(msg.data(), DBUS_TYPE_UNIX_FD, &fd, DBUS_TYPE_INVALID);
+ DBusMessageIter iter;
+ q_dbus_message_iter_init_append(msg.data(), &iter);
+ q_dbus_message_iter_append_basic(&iter, DBUS_TYPE_UNIX_FD, &fd);
// try to send to us
DBusPendingCall *pending_ptr;
- dbus_connection_send_with_reply(rawcon.data(), msg.data(), &pending_ptr, 1000);
+ q_dbus_connection_send_with_reply(rawcon.data(), msg.data(), &pending_ptr, 1000);
ScopedDBusPendingCall pending(pending_ptr);
// check that it got sent
- while (dbus_connection_dispatch(rawcon.data()) == DBUS_DISPATCH_DATA_REMAINS)
+ while (q_dbus_connection_dispatch(rawcon.data()) == DBUS_DISPATCH_DATA_REMAINS)
;
// now spin our event loop. We don't catch this call, so let's get the reply
@@ -1108,7 +1121,7 @@ void tst_QDBusMarshall::receiveUnknownType()
loop.exec();
// now try to receive the reply
- dbus_pending_call_block(pending.data());
+ q_dbus_pending_call_block(pending.data());
// check that the spy received what it was supposed to receive
QCOMPARE(spy.list.size(), 1);
@@ -1116,48 +1129,49 @@ void tst_QDBusMarshall::receiveUnknownType()
QFETCH(int, receivedTypeId);
QCOMPARE(spy.list.at(0).arguments().at(0).userType(), receivedTypeId);
- msg.reset(dbus_pending_call_steal_reply(pending.data()));
+ msg.reset(q_dbus_pending_call_steal_reply(pending.data()));
QVERIFY(msg);
- QCOMPARE(dbus_message_get_type(msg.data()), DBUS_MESSAGE_TYPE_METHOD_RETURN);
- QCOMPARE(dbus_message_get_signature(msg.data()), DBUS_TYPE_INT32_AS_STRING);
+ QCOMPARE(q_dbus_message_get_type(msg.data()), DBUS_MESSAGE_TYPE_METHOD_RETURN);
+ QCOMPARE(q_dbus_message_get_signature(msg.data()), DBUS_TYPE_INT32_AS_STRING);
int retval;
- QVERIFY(dbus_message_get_args(msg.data(), &error, DBUS_TYPE_INT32, &retval, DBUS_TYPE_INVALID));
+ QVERIFY(q_dbus_message_iter_init(msg.data(), &iter));
+ q_dbus_message_iter_get_basic(&iter, &retval);
QCOMPARE(retval, 42);
} else {
// create a signal that we'll emit
static const char signalName[] = "signalName";
static const char interfaceName[] = "local.interface.name";
- ScopedDBusMessage msg(dbus_message_new_signal("/", interfaceName, signalName));
- con.connect(dbus_bus_get_unique_name(rawcon.data()), QString(), interfaceName, signalName, &QTestEventLoop::instance(), SLOT(exitLoop()));
+ ScopedDBusMessage msg(q_dbus_message_new_signal("/", interfaceName, signalName));
+ con.connect(q_dbus_bus_get_unique_name(rawcon.data()), QString(), interfaceName, signalName, &QTestEventLoop::instance(), SLOT(exitLoop()));
QDBusMessageSpy spy;
- con.connect(dbus_bus_get_unique_name(rawcon.data()), QString(), interfaceName, signalName, &spy, SLOT(theSlot(QDBusMessage)));
+ con.connect(q_dbus_bus_get_unique_name(rawcon.data()), QString(), interfaceName, signalName, &spy, SLOT(theSlot(QDBusMessage)));
DBusMessageIter iter;
- dbus_message_iter_init_append(msg.data(), &iter);
+ q_dbus_message_iter_init_append(msg.data(), &iter);
int fd = fileno(stdout);
if (qstrcmp(QTest::currentDataTag(), "type-naked") == 0) {
// send naked
- dbus_message_iter_append_basic(&iter, DBUS_TYPE_UNIX_FD, &fd);
+ q_dbus_message_iter_append_basic(&iter, DBUS_TYPE_UNIX_FD, &fd);
} else {
DBusMessageIter subiter;
if (qstrcmp(QTest::currentDataTag(), "type-variant") == 0)
- dbus_message_iter_open_container(&iter, DBUS_TYPE_VARIANT, DBUS_TYPE_UNIX_FD_AS_STRING, &subiter);
+ q_dbus_message_iter_open_container(&iter, DBUS_TYPE_VARIANT, DBUS_TYPE_UNIX_FD_AS_STRING, &subiter);
else if (qstrcmp(QTest::currentDataTag(), "type-array") == 0)
- dbus_message_iter_open_container(&iter, DBUS_TYPE_ARRAY, DBUS_TYPE_UNIX_FD_AS_STRING, &subiter);
+ q_dbus_message_iter_open_container(&iter, DBUS_TYPE_ARRAY, DBUS_TYPE_UNIX_FD_AS_STRING, &subiter);
else if (qstrcmp(QTest::currentDataTag(), "type-struct") == 0)
- dbus_message_iter_open_container(&iter, DBUS_TYPE_STRUCT, 0, &subiter);
- dbus_message_iter_append_basic(&subiter, DBUS_TYPE_UNIX_FD, &fd);
- dbus_message_iter_close_container(&iter, &subiter);
+ q_dbus_message_iter_open_container(&iter, DBUS_TYPE_STRUCT, 0, &subiter);
+ q_dbus_message_iter_append_basic(&subiter, DBUS_TYPE_UNIX_FD, &fd);
+ q_dbus_message_iter_close_container(&iter, &subiter);
}
// send it
- dbus_connection_send(rawcon.data(), msg.data(), 0);
+ q_dbus_connection_send(rawcon.data(), msg.data(), 0);
// check that it got sent
- while (dbus_connection_dispatch(rawcon.data()) == DBUS_DISPATCH_DATA_REMAINS)
+ while (q_dbus_connection_dispatch(rawcon.data()) == DBUS_DISPATCH_DATA_REMAINS)
;
// now let's see what happens
diff --git a/tests/auto/dbus/qdbustype/qdbustype.pro b/tests/auto/dbus/qdbustype/qdbustype.pro
index 1e6335aa3b..21df33d2c7 100644
--- a/tests/auto/dbus/qdbustype/qdbustype.pro
+++ b/tests/auto/dbus/qdbustype/qdbustype.pro
@@ -2,6 +2,11 @@ CONFIG += testcase
TARGET = tst_qdbustype
QT = core-private dbus-private testlib
SOURCES += tst_qdbustype.cpp
-QMAKE_CXXFLAGS += $$QT_CFLAGS_DBUS
-LIBS_PRIVATE += $$QT_LIBS_DBUS
+contains(QT_CONFIG, dbus-linked) {
+ DEFINES += QT_LINKED_LIBDBUS
+ LIBS += $$QT_LIBS_DBUS
+ QMAKE_CXXFLAGS += $$QT_CFLAGS_DBUS
+} else {
+ SOURCES += ../../../../src/dbus/qdbus_symbols.cpp
+}
DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0
diff --git a/tests/auto/dbus/qdbustype/tst_qdbustype.cpp b/tests/auto/dbus/qdbustype/tst_qdbustype.cpp
index 791a42dcc4..e674b6d686 100644
--- a/tests/auto/dbus/qdbustype/tst_qdbustype.cpp
+++ b/tests/auto/dbus/qdbustype/tst_qdbustype.cpp
@@ -35,8 +35,18 @@
#include <QtCore/QCoreApplication>
#include <QtDBus/private/qdbusutil_p.h>
-
-#include <dbus/dbus.h>
+#include <QtDBus/private/qdbus_symbols_p.h>
+
+DEFINEFUNC(dbus_bool_t, dbus_signature_validate, (const char *signature,
+ DBusError *error),
+ (signature, error), return)
+DEFINEFUNC(dbus_bool_t, dbus_signature_validate_single, (const char *signature,
+ DBusError *error),
+ (signature, error), return)
+DEFINEFUNC(dbus_bool_t, dbus_type_is_basic, (int typecode),
+ (typecode), return)
+DEFINEFUNC(dbus_bool_t, dbus_type_is_fixed, (int typecode),
+ (typecode), return)
class tst_QDBusType : public QObject
{
@@ -182,7 +192,7 @@ void tst_QDBusType::isValidFixedType()
int type = data.at(0).unicode();
if (isValid)
- QCOMPARE(bool(dbus_type_is_fixed(type)), result);
+ QCOMPARE(bool(q_dbus_type_is_fixed(type)), result);
QCOMPARE(QDBusUtil::isValidFixedType(type), result);
}
@@ -204,7 +214,7 @@ void tst_QDBusType::isValidBasicType()
int type = data.at(0).unicode();
if (isValid)
- QCOMPARE(bool(dbus_type_is_basic(type)), result);
+ QCOMPARE(bool(q_dbus_type_is_basic(type)), result);
QCOMPARE(QDBusUtil::isValidBasicType(type), result);
}
@@ -220,7 +230,7 @@ void tst_QDBusType::isValidSingleSignature()
QFETCH(QString, data);
QFETCH(bool, result);
- QCOMPARE(bool(dbus_signature_validate_single(data.toLatin1(), 0)), result);
+ QCOMPARE(bool(q_dbus_signature_validate_single(data.toLatin1(), 0)), result);
QCOMPARE(QDBusUtil::isValidSingleSignature(data), result);
}
@@ -236,11 +246,11 @@ void tst_QDBusType::isValidArray()
QFETCH(bool, result);
data.prepend("a");
- QCOMPARE(bool(dbus_signature_validate_single(data.toLatin1(), 0)), result);
+ QCOMPARE(bool(q_dbus_signature_validate_single(data.toLatin1(), 0)), result);
QCOMPARE(QDBusUtil::isValidSingleSignature(data), result);
data.prepend("a");
- QCOMPARE(bool(dbus_signature_validate_single(data.toLatin1(), 0)), result);
+ QCOMPARE(bool(q_dbus_signature_validate_single(data.toLatin1(), 0)), result);
QCOMPARE(QDBusUtil::isValidSingleSignature(data), result);
}
@@ -256,7 +266,7 @@ void tst_QDBusType::isValidSignature()
data.append(data);
if (data.at(0).unicode())
- QCOMPARE(bool(dbus_signature_validate(data.toLatin1(), 0)), result);
+ QCOMPARE(bool(q_dbus_signature_validate(data.toLatin1(), 0)), result);
QCOMPARE(QDBusUtil::isValidSignature(data), result);
}