diff options
author | Simon Hausmann <simon.hausmann@digia.com> | 2015-01-21 11:14:34 +0100 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2015-01-21 11:14:34 +0100 |
commit | 112342b32650f56e289c7dcd181d5897b0b77a78 (patch) | |
tree | 76e9a37bcaa70097d009628bb2b116ea782c72cb /tests/auto/dbus/qdbusinterface | |
parent | 3bbc1bf53bac7648637d92abecadc568acfffb2d (diff) | |
parent | b6191b16d41459ed73cea738dfaf8e25e81ae22b (diff) |
Merge "Merge remote-tracking branch 'origin/5.4' into dev" into refs/staging/dev
Diffstat (limited to 'tests/auto/dbus/qdbusinterface')
-rw-r--r-- | tests/auto/dbus/qdbusinterface/qmyserver/qmyserver.cpp | 22 | ||||
-rw-r--r-- | tests/auto/dbus/qdbusinterface/tst_qdbusinterface.cpp | 9 |
2 files changed, 25 insertions, 6 deletions
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() |