From 4d7137c4a0deca5ddcaa7c0965fbc61c7f23bec6 Mon Sep 17 00:00:00 2001 From: Oliver Wolff Date: Thu, 24 May 2018 10:32:27 +0200 Subject: [PATCH] tst_qobject: Fix execution in debug&release shadow builds The previous approach of having the signalbug helper in a subdirectory did not work for shadow builds, as QFINDTESTDATA would not find that dir. By putting both test and helper into the same directory, the helper will be found in the test's current working directory. The second problem was that not putting executables into debug/release subdirectories might have lead to the WinRT AppxManifest being overwritten by the wrong configuration. When Qt is configured with -release for example, it was possible that the debug manifest (Manifest files are always created next to the target) is written last and thus contains debug VCLibs as a dependency. Change-Id: Ia39315432860405642542449296c16dd2ae9fa9f Reviewed-by: Joerg Bornemann Reviewed-by: Oswald Buddenhagen --- tests/auto/corelib/kernel/qobject/.gitignore | 8 +++++-- .../kernel/qobject/signalbug/signalbug.pro | 13 +++++++++-- .../auto/corelib/kernel/qobject/test/test.pro | 23 +++++++++++++++++-- .../corelib/kernel/qobject/tst_qobject.cpp | 11 +-------- 4 files changed, 39 insertions(+), 16 deletions(-) diff --git a/tests/auto/corelib/kernel/qobject/.gitignore b/tests/auto/corelib/kernel/qobject/.gitignore index 7970e32c8f0..d6090653330 100644 --- a/tests/auto/corelib/kernel/qobject/.gitignore +++ b/tests/auto/corelib/kernel/qobject/.gitignore @@ -1,3 +1,7 @@ tst_qobject -signalbug/signalbug -signalbug/signalbug.exe +signalbug_helper +signalbug_helper.exe +debug/signalbug_helper +release/signalbug_helper +debug/signalbug_helper.exe +release/signalbug_helper.exe diff --git a/tests/auto/corelib/kernel/qobject/signalbug/signalbug.pro b/tests/auto/corelib/kernel/qobject/signalbug/signalbug.pro index cc51b4c6615..755fecbd04d 100644 --- a/tests/auto/corelib/kernel/qobject/signalbug/signalbug.pro +++ b/tests/auto/corelib/kernel/qobject/signalbug/signalbug.pro @@ -1,6 +1,15 @@ -CONFIG -= app_bundle debug_and_release +CONFIG -= app_bundle CONFIG += console -DESTDIR = ./ +debug_and_release { + CONFIG(debug, debug|release) { + TARGET = ../../debug/signalbug_helper + } else { + TARGET = ../../release/signalbug_helper + } +} else { + TARGET = ../signalbug_helper +} + QT = core HEADERS += signalbug.h diff --git a/tests/auto/corelib/kernel/qobject/test/test.pro b/tests/auto/corelib/kernel/qobject/test/test.pro index 4e77cb48c54..be150745233 100644 --- a/tests/auto/corelib/kernel/qobject/test/test.pro +++ b/tests/auto/corelib/kernel/qobject/test/test.pro @@ -1,10 +1,29 @@ CONFIG += testcase console -TARGET = ../tst_qobject +debug_and_release { + CONFIG(debug, debug|release) { + TARGET = ../../debug/tst_qobject + } else { + TARGET = ../../release/tst_qobject + } +} else { + TARGET = ../tst_qobject +} + QT = core-private network testlib SOURCES = ../tst_qobject.cpp # Force C++17 if available (needed due to P0012R1) contains(QT_CONFIG, c++1z): CONFIG += c++1z -!winrt: TEST_HELPER_INSTALLS = ../signalbug/signalbug +!winrt { + debug_and_release { + CONFIG(debug, debug|release) { + TEST_HELPER_INSTALLS = ../debug/signalbug_helper + } else { + TEST_HELPER_INSTALLS = ../release/signalbug_helper + } + } else { + TEST_HELPER_INSTALLS = ../signalbug_helper + } +} DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0 diff --git a/tests/auto/corelib/kernel/qobject/tst_qobject.cpp b/tests/auto/corelib/kernel/qobject/tst_qobject.cpp index 43dcb241e4b..fdacf83eb29 100644 --- a/tests/auto/corelib/kernel/qobject/tst_qobject.cpp +++ b/tests/auto/corelib/kernel/qobject/tst_qobject.cpp @@ -55,7 +55,6 @@ class tst_QObject : public QObject { Q_OBJECT private slots: - void initTestCase(); void disconnect(); void connectSlotsByName(); void connectSignalsToSignalsWithDefaultArguments(); @@ -283,14 +282,6 @@ static void playWithObjects() } } -void tst_QObject::initTestCase() -{ -#if QT_CONFIG(process) - const QString testDataDir = QFileInfo(QFINDTESTDATA("signalbug")).absolutePath(); - QVERIFY2(QDir::setCurrent(testDataDir), qPrintable("Could not chdir to " + testDataDir)); -#endif -} - void tst_QObject::disconnect() { SenderObject *s = new SenderObject; @@ -3015,7 +3006,7 @@ void tst_QObject::recursiveSignalEmission() #else QProcess proc; // signalbug helper app should always be next to this test binary - const QString path = QStringLiteral("signalbug/signalbug"); + const QString path = QStringLiteral("signalbug_helper"); proc.start(path); QVERIFY2(proc.waitForStarted(), qPrintable(QString::fromLatin1("Cannot start '%1': %2").arg(path, proc.errorString()))); QVERIFY(proc.waitForFinished());