diff options
Diffstat (limited to 'tests/auto')
6 files changed, 52 insertions, 14 deletions
diff --git a/tests/auto/dbus/qdbusabstractadaptor/qmyserver/qmyserver.cpp b/tests/auto/dbus/qdbusabstractadaptor/qmyserver/qmyserver.cpp index 76e9332d98..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) @@ -146,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 4c6f3c5eee..b7ecdef16e 100644 --- a/tests/auto/dbus/qdbusabstractadaptor/tst_qdbusabstractadaptor.cpp +++ b/tests/auto/dbus/qdbusabstractadaptor/tst_qdbusabstractadaptor.cpp @@ -514,10 +514,9 @@ 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() diff --git a/tests/auto/dbus/qdbusabstractinterface/qpinger/qpinger.cpp b/tests/auto/dbus/qdbusabstractinterface/qpinger/qpinger.cpp index 900faeb68e..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() @@ -97,11 +105,16 @@ private slots: { 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 0a8da46046..0b33f9b1cf 100644 --- a/tests/auto/dbus/qdbusabstractinterface/tst_qdbusabstractinterface.cpp +++ b/tests/auto/dbus/qdbusabstractinterface/tst_qdbusabstractinterface.cpp @@ -268,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/qdbusinterface/qmyserver/qmyserver.cpp b/tests/auto/dbus/qdbusinterface/qmyserver/qmyserver.cpp index d3cfaa74b3..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) @@ -123,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 92a44292c3..fce5868980 100644 --- a/tests/auto/dbus/qdbusinterface/tst_qdbusinterface.cpp +++ b/tests/auto/dbus/qdbusinterface/tst_qdbusinterface.cpp @@ -290,10 +290,10 @@ 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() |