Fix handling of subprocesses for QtDBus unit tests on Windows

The executables are not in the same dir as on Unix, so we need to use
QFINDTESTDATA to find them. The DESTDIR setting prevents qmake from
placing the executables in a "debug/" subdir.

Change-Id: I1d6d10e6f6f109f55fd9809dcf83da0386f38772
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
bb10
Thiago Macieira 2014-12-11 17:42:49 -08:00
parent 3148d0c7b4
commit 36314ae75f
14 changed files with 43 additions and 25 deletions

View File

@ -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

View File

@ -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

View File

@ -491,12 +491,13 @@ 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()));
WaitForQMyServer w;
QVERIFY(w.ok());

View File

@ -1,6 +1,7 @@
SOURCES = qpinger.cpp ../interface.cpp
HEADERS = ../interface.h
TARGET = qpinger
DESTDIR = ./
CONFIG -= app_bundle
CONFIG += console
QT = core dbus

View File

@ -3,6 +3,7 @@ SOURCES += ../tst_qdbusabstractinterface.cpp ../interface.cpp
HEADERS += ../interface.h
TARGET = ../tst_qdbusabstractinterface
DESTDIR = ./
QT = core testlib
QT += dbus

View File

@ -231,12 +231,13 @@ void tst_QDBusAbstractInterface::initTestCase()
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()));
// verify service is now registered
QTRY_VERIFY(con.interface()->isServiceRegistered(serviceName));
@ -251,7 +252,11 @@ 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

View File

@ -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

View File

@ -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

View File

@ -266,13 +266,13 @@ 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()));
WaitForQMyServer w;
QVERIFY(w.ok());

View File

@ -1,5 +1,6 @@
SOURCES = qpong.cpp
TARGET = qpong
DESTDIR = ./
QT = core dbus
CONFIG -= app_bundle
CONFIG += console

View File

@ -1,6 +1,7 @@
CONFIG += testcase
SOURCES += ../tst_qdbusmarshall.cpp
TARGET = ../tst_qdbusmarshall
DESTDIR = ./
QT = core-private dbus-private testlib

View File

@ -130,13 +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
proc.start(QFINDTESTDATA("qpong/qpong" EXE));
if (!QDBusConnection::sessionBus().interface()->isServiceRegistered(serviceName)) {
QVERIFY(proc.waitForStarted());
QVERIFY2(proc.waitForStarted(), qPrintable(proc.errorString()));
QVERIFY(con.isConnected());
con.connect("org.freedesktop.DBus", QString(), "org.freedesktop.DBus", "NameOwnerChanged",

View File

@ -1,6 +1,7 @@
SOURCES = server.cpp
HEADERS = ../serverobject.h
TARGET = server
DESTDIR = .
QT += dbus
QT -= gui
DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0

View File

@ -80,11 +80,12 @@ void tst_QDBusPerformance::initTestCase()
&QTestEventLoop::instance(), SLOT(exitLoop()));
#ifdef Q_OS_WIN
proc.start("server");
# define EXE ".exe"
#else
proc.start("./server/server");
# define EXE ""
#endif
QVERIFY(proc.waitForStarted());
proc.start(QFINDTESTDATA("server/server" EXE));
QVERIFY2(proc.waitForStarted(), qPrintable(proc.errorString()));
QTestEventLoop::instance().enterLoop(5);
QVERIFY(con.interface()->isServiceRegistered(serviceName));