diff options
author | Frederik Gladhorn <frederik.gladhorn@theqtcompany.com> | 2014-12-29 16:37:38 +0100 |
---|---|---|
committer | Frederik Gladhorn <frederik.gladhorn@theqtcompany.com> | 2014-12-29 16:37:38 +0100 |
commit | aaff94c2df665035addb90714bab4722003894da (patch) | |
tree | 3af76e8aa4dbf86a86b1e4d2ad2f6dda06374ee0 /tests/auto/dbus | |
parent | 2302d386c7a1aa1a96658f79c236d6b8a59db7ac (diff) | |
parent | 1196f691120d77ab3be55f21824aba645210fb8c (diff) |
Merge remote-tracking branch 'origin/5.4' into dev
Conflicts:
src/corelib/tools/qbytearray.cpp
src/gui/kernel/qplatformsystemtrayicon.cpp
src/gui/kernel/qplatformsystemtrayicon.h
src/plugins/platforms/xcb/xcb-plugin.pro
Change-Id: I00355d3908b678af8a61c38f9e814a63df808c79
Diffstat (limited to 'tests/auto/dbus')
18 files changed, 94 insertions, 72 deletions
diff --git a/tests/auto/dbus/qdbusabstractadaptor/qmyserver/qmyserver.cpp b/tests/auto/dbus/qdbusabstractadaptor/qmyserver/qmyserver.cpp index b4c16c6fa3..c680d93dab 100644 --- a/tests/auto/dbus/qdbusabstractadaptor/qmyserver/qmyserver.cpp +++ b/tests/auto/dbus/qdbusabstractadaptor/qmyserver/qmyserver.cpp @@ -44,14 +44,14 @@ QString valueSpy; Q_DECLARE_METATYPE(QDBusConnection::RegisterOptions) -class MyServer : public QDBusServer +class MyServer : public QDBusServer, protected QDBusContext { Q_OBJECT Q_CLASSINFO("D-Bus Interface", "org.qtproject.autotests.qmyserver") public: - MyServer(QString addr = "unix:tmpdir=/tmp", QObject* parent = 0) - : QDBusServer(addr, parent), + MyServer(QObject* parent = 0) + : QDBusServer(parent), m_conn("none"), obj(NULL) { @@ -67,6 +67,8 @@ public: public slots: QString address() const { + if (!QDBusServer::isConnected()) + sendErrorReply(QDBusServer::lastError().name(), QDBusServer::lastError().message()); return QDBusServer::address(); } @@ -161,6 +163,7 @@ int main(int argc, char *argv[]) con.registerObject(objectPath, &server, QDBusConnection::ExportAllSlots); printf("ready.\n"); + fflush(stdout); return app.exec(); } diff --git a/tests/auto/dbus/qdbusabstractadaptor/qmyserver/qmyserver.pro b/tests/auto/dbus/qdbusabstractadaptor/qmyserver/qmyserver.pro index dc480fc88c..ddafd528ee 100644 --- a/tests/auto/dbus/qdbusabstractadaptor/qmyserver/qmyserver.pro +++ b/tests/auto/dbus/qdbusabstractadaptor/qmyserver/qmyserver.pro @@ -1,6 +1,7 @@ SOURCES = qmyserver.cpp HEADERS = ../myobject.h TARGET = qmyserver +DESTDIR = ./ QT = core dbus CONFIG -= app_bundle DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0 diff --git a/tests/auto/dbus/qdbusabstractadaptor/test/test.pro b/tests/auto/dbus/qdbusabstractadaptor/test/test.pro index 0e4dc91128..3d8f885437 100644 --- a/tests/auto/dbus/qdbusabstractadaptor/test/test.pro +++ b/tests/auto/dbus/qdbusabstractadaptor/test/test.pro @@ -2,6 +2,7 @@ CONFIG += testcase SOURCES += ../tst_qdbusabstractadaptor.cpp HEADERS += ../myobject.h TARGET = ../tst_qdbusabstractadaptor +DESTDIR = ./ QT = core core-private dbus testlib DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0 diff --git a/tests/auto/dbus/qdbusabstractadaptor/tst_qdbusabstractadaptor.cpp b/tests/auto/dbus/qdbusabstractadaptor/tst_qdbusabstractadaptor.cpp index 9fe6bc790e..971c939aad 100644 --- a/tests/auto/dbus/qdbusabstractadaptor/tst_qdbusabstractadaptor.cpp +++ b/tests/auto/dbus/qdbusabstractadaptor/tst_qdbusabstractadaptor.cpp @@ -491,12 +491,14 @@ void tst_QDBusAbstractAdaptor::initTestCase() commonInit(); // start peer server - #ifdef Q_OS_WIN - proc.start("qmyserver"); - #else - proc.start("./qmyserver/qmyserver"); - #endif - QVERIFY(proc.waitForStarted()); +#ifdef Q_OS_WIN +# define EXE ".exe" +#else +# define EXE "" +#endif + proc.start(QFINDTESTDATA("qmyserver/qmyserver" EXE)); + QVERIFY2(proc.waitForStarted(), qPrintable(proc.errorString())); + QVERIFY(proc.waitForReadyRead()); WaitForQMyServer w; QVERIFY(w.ok()); diff --git a/tests/auto/dbus/qdbusabstractinterface/qpinger/qpinger.cpp b/tests/auto/dbus/qdbusabstractinterface/qpinger/qpinger.cpp index 6be61ec9e0..49462d388c 100644 --- a/tests/auto/dbus/qdbusabstractinterface/qpinger/qpinger.cpp +++ b/tests/auto/dbus/qdbusabstractinterface/qpinger/qpinger.cpp @@ -38,13 +38,13 @@ static const char serviceName[] = "org.qtproject.autotests.qpinger"; static const char objectPath[] = "/org/qtproject/qpinger"; //static const char *interfaceName = serviceName; -class PingerServer : public QDBusServer +class PingerServer : public QDBusServer, protected QDBusContext { Q_OBJECT Q_CLASSINFO("D-Bus Interface", "org.qtproject.autotests.qpinger") public: - PingerServer(QString addr = "unix:tmpdir=/tmp", QObject* parent = 0) - : QDBusServer(addr, parent), + PingerServer(QObject* parent = 0) + : QDBusServer(parent), m_conn("none") { connect(this, SIGNAL(newConnection(QDBusConnection)), SLOT(handleConnection(QDBusConnection))); @@ -54,6 +54,8 @@ public: public slots: QString address() const { + if (!QDBusServer::isConnected()) + sendErrorReply(QDBusServer::lastError().name(), QDBusServer::lastError().message()); return QDBusServer::address(); } @@ -116,6 +118,7 @@ int main(int argc, char *argv[]) con.registerObject(objectPath, &server, QDBusConnection::ExportAllSlots); printf("ready.\n"); + fflush(stdout); return app.exec(); } diff --git a/tests/auto/dbus/qdbusabstractinterface/qpinger/qpinger.pro b/tests/auto/dbus/qdbusabstractinterface/qpinger/qpinger.pro index 5001ec2cd2..957b47e413 100644 --- a/tests/auto/dbus/qdbusabstractinterface/qpinger/qpinger.pro +++ b/tests/auto/dbus/qdbusabstractinterface/qpinger/qpinger.pro @@ -1,6 +1,7 @@ SOURCES = qpinger.cpp ../interface.cpp HEADERS = ../interface.h TARGET = qpinger +DESTDIR = ./ CONFIG -= app_bundle CONFIG += console QT = core dbus diff --git a/tests/auto/dbus/qdbusabstractinterface/test/test.pro b/tests/auto/dbus/qdbusabstractinterface/test/test.pro index 223c94866c..afd101455e 100644 --- a/tests/auto/dbus/qdbusabstractinterface/test/test.pro +++ b/tests/auto/dbus/qdbusabstractinterface/test/test.pro @@ -3,6 +3,7 @@ SOURCES += ../tst_qdbusabstractinterface.cpp ../interface.cpp HEADERS += ../interface.h TARGET = ../tst_qdbusabstractinterface +DESTDIR = ./ QT = core testlib QT += dbus diff --git a/tests/auto/dbus/qdbusabstractinterface/tst_qdbusabstractinterface.cpp b/tests/auto/dbus/qdbusabstractinterface/tst_qdbusabstractinterface.cpp index 904c1be88f..0cb29d121b 100644 --- a/tests/auto/dbus/qdbusabstractinterface/tst_qdbusabstractinterface.cpp +++ b/tests/auto/dbus/qdbusabstractinterface/tst_qdbusabstractinterface.cpp @@ -51,6 +51,7 @@ class tst_QDBusAbstractInterface: public QObject { Q_OBJECT Interface targetObj; + QString peerAddress; Pinger getPinger(QString service = "", const QString &path = "/") { @@ -81,6 +82,7 @@ public: private slots: void initTestCase(); + void cleanupTestCase(); void init(); void cleanup(); @@ -223,24 +225,20 @@ void tst_QDBusAbstractInterface::initTestCase() QDBusConnection con = QDBusConnection::sessionBus(); QVERIFY(con.isConnected()); con.registerObject("/", &targetObj, QDBusConnection::ExportScriptableContents); -} - -void tst_QDBusAbstractInterface::init() -{ - QDBusConnection con = QDBusConnection::sessionBus(); - QVERIFY(con.isConnected()); // verify service isn't registered by something else // (e.g. a left over qpinger from a previous test run) QVERIFY(!con.interface()->isServiceRegistered(serviceName)); // start peer server - #ifdef Q_OS_WIN - proc.start("qpinger"); - #else - proc.start("./qpinger/qpinger"); - #endif - QVERIFY(proc.waitForStarted()); +#ifdef Q_OS_WIN +# define EXE ".exe" +#else +# define EXE "" +#endif + proc.start(QFINDTESTDATA("qpinger/qpinger" EXE)); + QVERIFY2(proc.waitForStarted(), qPrintable(proc.errorString())); + QVERIFY(proc.waitForReadyRead()); // verify service is now registered QTRY_VERIFY(con.interface()->isServiceRegistered(serviceName)); @@ -249,10 +247,33 @@ void tst_QDBusAbstractInterface::init() QDBusMessage req = QDBusMessage::createMethodCall(serviceName, objectPath, interfaceName, "address"); QDBusMessage rpl = con.call(req); QVERIFY(rpl.type() == QDBusMessage::ReplyMessage); - QString address = rpl.arguments().at(0).toString(); + peerAddress = rpl.arguments().at(0).toString(); +} + +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)); + } +} + +void tst_QDBusAbstractInterface::init() +{ + QDBusConnection con = QDBusConnection::sessionBus(); + QVERIFY(con.isConnected()); // connect to peer server - QDBusConnection peercon = QDBusConnection::connectToPeer(address, "peer"); + QDBusConnection peercon = QDBusConnection::connectToPeer(peerAddress, "peer"); QVERIFY(peercon.isConnected()); QDBusMessage req2 = QDBusMessage::createMethodCall(serviceName, objectPath, interfaceName, "isConnected"); @@ -265,20 +286,13 @@ void tst_QDBusAbstractInterface::cleanup() { QDBusConnection::disconnectFromPeer("peer"); - // Kill peer, resetting the object exported by a separate process - proc.terminate(); - QVERIFY(proc.waitForFinished() || proc.state() == QProcess::NotRunning); - // Reset the object exported by this process targetObj.m_stringProp = QString(); targetObj.m_variantProp = QDBusVariant(); targetObj.m_complexProp = RegisteredType(); - // Wait until the service is certainly not registered - QDBusConnection con = QDBusConnection::sessionBus(); - if (con.isConnected()) { - QTRY_VERIFY(!con.interface()->isServiceRegistered(serviceName)); - } + QDBusMessage resetCall = QDBusMessage::createMethodCall(serviceName, objectPath, interfaceName, "reset"); + QVERIFY(QDBusConnection::sessionBus().call(resetCall).type() == QDBusMessage::ReplyMessage); } void tst_QDBusAbstractInterface::makeVoidCall() diff --git a/tests/auto/dbus/qdbusconnection/tst_qdbusconnection.cpp b/tests/auto/dbus/qdbusconnection/tst_qdbusconnection.cpp index c8d1184226..7e6e742e28 100644 --- a/tests/auto/dbus/qdbusconnection/tst_qdbusconnection.cpp +++ b/tests/auto/dbus/qdbusconnection/tst_qdbusconnection.cpp @@ -296,7 +296,7 @@ void tst_QDBusConnection::connectToPeer() QVERIFY(con.lastError().isValid()); } - QDBusServer server("unix:tmpdir=/tmp", 0); + QDBusServer server; { QDBusConnection con = QDBusConnection::connectToPeer( @@ -381,9 +381,7 @@ class MyServer : public QDBusServer { Q_OBJECT public: - MyServer(QString path, QString addr, QObject* parent) : QDBusServer(addr, parent), - m_path(path), - m_connections() + MyServer(QString path) : m_path(path), m_connections() { connect(this, SIGNAL(newConnection(QDBusConnection)), SLOT(handleConnection(QDBusConnection))); } @@ -446,7 +444,7 @@ void tst_QDBusConnection::registerObjectPeer() { QFETCH(QString, path); - MyServer server(path, "unix:tmpdir=/tmp", 0); + MyServer server(path); QDBusConnection::connectToPeer(server.address(), "beforeFoo"); @@ -594,8 +592,7 @@ class MyServer2 : public QDBusServer { Q_OBJECT public: - MyServer2(QString addr, QObject* parent) : QDBusServer(addr, parent), - m_conn("none") + MyServer2() : m_conn("none") { connect(this, SIGNAL(newConnection(QDBusConnection)), SLOT(handleConnection(QDBusConnection))); } @@ -620,7 +617,7 @@ private: void tst_QDBusConnection::registerObjectPeer2() { - MyServer2 server("unix:tmpdir=/tmp", 0); + MyServer2 server; QDBusConnection con = QDBusConnection::connectToPeer(server.address(), "foo"); QCoreApplication::processEvents(); QVERIFY(con.isConnected()); @@ -775,7 +772,7 @@ void tst_QDBusConnection::registerQObjectChildren() void tst_QDBusConnection::registerQObjectChildrenPeer() { - MyServer2 server("unix:tmpdir=/tmp", 0); + MyServer2 server; QDBusConnection con = QDBusConnection::connectToPeer(server.address(), "foo"); QCoreApplication::processEvents(); QVERIFY(con.isConnected()); diff --git a/tests/auto/dbus/qdbusconnection_no_bus/tst_qdbusconnection_no_bus.cpp b/tests/auto/dbus/qdbusconnection_no_bus/tst_qdbusconnection_no_bus.cpp index 2c5ca71990..3d7e477f47 100644 --- a/tests/auto/dbus/qdbusconnection_no_bus/tst_qdbusconnection_no_bus.cpp +++ b/tests/auto/dbus/qdbusconnection_no_bus/tst_qdbusconnection_no_bus.cpp @@ -51,8 +51,8 @@ class tst_QDBusConnectionNoBus : public QObject public: tst_QDBusConnectionNoBus() { - ::setenv("DBUS_SESSION_BUS_ADDRESS", "unix:abstract=/tmp/does_not_exist", 1); - ::setenv("QT_SIMULATE_DBUS_LIBFAIL", "1", 1); + qputenv("DBUS_SESSION_BUS_ADDRESS", "unix:abstract=/tmp/does_not_exist"); + qputenv("QT_SIMULATE_DBUS_LIBFAIL", "1"); } private slots: diff --git a/tests/auto/dbus/qdbusinterface/qmyserver/qmyserver.cpp b/tests/auto/dbus/qdbusinterface/qmyserver/qmyserver.cpp index df131f13f6..7a22fe90ad 100644 --- a/tests/auto/dbus/qdbusinterface/qmyserver/qmyserver.cpp +++ b/tests/auto/dbus/qdbusinterface/qmyserver/qmyserver.cpp @@ -42,14 +42,14 @@ static const char objectPath[] = "/org/qtproject/qmyserver"; int MyObject::callCount = 0; QVariantList MyObject::callArgs; -class MyServer : public QDBusServer +class MyServer : public QDBusServer, protected QDBusContext { Q_OBJECT Q_CLASSINFO("D-Bus Interface", "org.qtproject.autotests.qmyserver") public: - MyServer(QString addr = "unix:tmpdir=/tmp", QObject* parent = 0) - : QDBusServer(addr, parent), + MyServer(QObject* parent = 0) + : QDBusServer(parent), m_conn("none") { connect(this, SIGNAL(newConnection(QDBusConnection)), SLOT(handleConnection(QDBusConnection))); @@ -58,6 +58,8 @@ public: public slots: QString address() const { + if (!QDBusServer::isConnected()) + sendErrorReply(QDBusServer::lastError().name(), QDBusServer::lastError().message()); return QDBusServer::address(); } @@ -140,6 +142,7 @@ int main(int argc, char *argv[]) con.registerObject(objectPath, &server, QDBusConnection::ExportAllSlots); printf("ready.\n"); + fflush(stdout); return app.exec(); } diff --git a/tests/auto/dbus/qdbusinterface/qmyserver/qmyserver.pro b/tests/auto/dbus/qdbusinterface/qmyserver/qmyserver.pro index dc480fc88c..ddafd528ee 100644 --- a/tests/auto/dbus/qdbusinterface/qmyserver/qmyserver.pro +++ b/tests/auto/dbus/qdbusinterface/qmyserver/qmyserver.pro @@ -1,6 +1,7 @@ SOURCES = qmyserver.cpp HEADERS = ../myobject.h TARGET = qmyserver +DESTDIR = ./ QT = core dbus CONFIG -= app_bundle DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0 diff --git a/tests/auto/dbus/qdbusinterface/test/test.pro b/tests/auto/dbus/qdbusinterface/test/test.pro index ba70273aab..70e631de9c 100644 --- a/tests/auto/dbus/qdbusinterface/test/test.pro +++ b/tests/auto/dbus/qdbusinterface/test/test.pro @@ -2,6 +2,7 @@ CONFIG += testcase SOURCES += ../tst_qdbusinterface.cpp HEADERS += ../myobject.h TARGET = ../tst_qdbusinterface +DESTDIR = ./ QT = core core-private dbus testlib DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0 diff --git a/tests/auto/dbus/qdbusinterface/tst_qdbusinterface.cpp b/tests/auto/dbus/qdbusinterface/tst_qdbusinterface.cpp index e66b1134d4..04992c9f28 100644 --- a/tests/auto/dbus/qdbusinterface/tst_qdbusinterface.cpp +++ b/tests/auto/dbus/qdbusinterface/tst_qdbusinterface.cpp @@ -266,13 +266,14 @@ void tst_QDBusInterface::initTestCase() | QDBusConnection::ExportAllSlots | QDBusConnection::ExportAllInvokables); - // start peer server - #ifdef Q_OS_WIN - proc.start("qmyserver"); - #else - proc.start("./qmyserver/qmyserver"); - #endif - QVERIFY(proc.waitForStarted()); +#ifdef Q_OS_WIN +# define EXE ".exe" +#else +# define EXE "" +#endif + proc.start(QFINDTESTDATA("qmyserver/qmyserver" EXE)); + QVERIFY2(proc.waitForStarted(), qPrintable(proc.errorString())); + QVERIFY(proc.waitForReadyRead()); WaitForQMyServer w; QVERIFY(w.ok()); diff --git a/tests/auto/dbus/qdbusmarshall/qpong/qpong.cpp b/tests/auto/dbus/qdbusmarshall/qpong/qpong.cpp index 5476dd7f8e..bb8aab3d21 100644 --- a/tests/auto/dbus/qdbusmarshall/qpong/qpong.cpp +++ b/tests/auto/dbus/qdbusmarshall/qpong/qpong.cpp @@ -66,6 +66,7 @@ int main(int argc, char *argv[]) con.registerObject(objectPath, &pong, QDBusConnection::ExportAllSlots); printf("ready.\n"); + fflush(stdout); return app.exec(); } diff --git a/tests/auto/dbus/qdbusmarshall/qpong/qpong.pro b/tests/auto/dbus/qdbusmarshall/qpong/qpong.pro index ffc538f2ab..a4c5efba85 100644 --- a/tests/auto/dbus/qdbusmarshall/qpong/qpong.pro +++ b/tests/auto/dbus/qdbusmarshall/qpong/qpong.pro @@ -1,5 +1,6 @@ SOURCES = qpong.cpp TARGET = qpong +DESTDIR = ./ QT = core dbus CONFIG -= app_bundle CONFIG += console diff --git a/tests/auto/dbus/qdbusmarshall/test/test.pro b/tests/auto/dbus/qdbusmarshall/test/test.pro index 5c67bfc624..658cc52fde 100644 --- a/tests/auto/dbus/qdbusmarshall/test/test.pro +++ b/tests/auto/dbus/qdbusmarshall/test/test.pro @@ -1,6 +1,7 @@ CONFIG += testcase SOURCES += ../tst_qdbusmarshall.cpp TARGET = ../tst_qdbusmarshall +DESTDIR = ./ QT = core-private dbus-private testlib diff --git a/tests/auto/dbus/qdbusmarshall/tst_qdbusmarshall.cpp b/tests/auto/dbus/qdbusmarshall/tst_qdbusmarshall.cpp index 972205566a..4d12522a68 100644 --- a/tests/auto/dbus/qdbusmarshall/tst_qdbusmarshall.cpp +++ b/tests/auto/dbus/qdbusmarshall/tst_qdbusmarshall.cpp @@ -130,25 +130,15 @@ void tst_QDBusMarshall::initTestCase() commonInit(); QDBusConnection con = QDBusConnection::sessionBus(); fileDescriptorPassing = con.connectionCapabilities() & QDBusConnection::UnixFileDescriptorPassing; + #ifdef Q_OS_WIN - proc.start("qpong"); +# define EXE ".exe" #else - proc.start("./qpong/qpong"); +# define EXE "" #endif - if (!QDBusConnection::sessionBus().interface()->isServiceRegistered(serviceName)) { - QVERIFY(proc.waitForStarted()); - - QVERIFY(con.isConnected()); - con.connect("org.freedesktop.DBus", QString(), "org.freedesktop.DBus", "NameOwnerChanged", - QStringList() << serviceName << QString(""), QString(), - &QTestEventLoop::instance(), SLOT(exitLoop())); - QTestEventLoop::instance().enterLoop(2); - QVERIFY(!QTestEventLoop::instance().timeout()); - QVERIFY(QDBusConnection::sessionBus().interface()->isServiceRegistered(serviceName)); - con.disconnect("org.freedesktop.DBus", QString(), "org.freedesktop.DBus", "NameOwnerChanged", - QStringList() << serviceName << QString(""), QString(), - &QTestEventLoop::instance(), SLOT(exitLoop())); - } + proc.start(QFINDTESTDATA("qpong/qpong" EXE)); + QVERIFY2(proc.waitForStarted(), qPrintable(proc.errorString())); + QVERIFY(proc.waitForReadyRead()); } void tst_QDBusMarshall::cleanupTestCase() |