tst_qlogging: Fix execution for WinRT

Not putting executables into debug/release subdirectories leads 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.

Additionally the test was changed in that way, that the resulting file
system structure (having helper and test application in a "top level"
debug and release folder) is the same structure as in tst_qobject.

Change-Id: I034752b4e5d22b98f6def95fb53c2b1947dded03
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@qt.io>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
This commit is contained in:
Oliver Wolff 2018-06-27 07:30:39 +02:00
parent 465098088e
commit 00d9ade6e6
3 changed files with 26 additions and 12 deletions

View File

@ -1,6 +1,15 @@
TEMPLATE = app
TARGET = app
debug_and_release {
CONFIG(debug, debug|release) {
TARGET = ../debug/helper
} else {
TARGET = ../release/helper
}
} else {
TARGET = ../helper
}
QT = core
DESTDIR = ./

View File

@ -1,11 +1,21 @@
CONFIG += testcase
CONFIG -= debug_and_release_target
qtConfig(c++11): CONFIG += c++11
qtConfig(c++14): CONFIG += c++14
debug_and_release {
CONFIG(debug, debug|release) {
TARGET = ../../debug/tst_qlogging
!winrt: TEST_HELPER_INSTALLS = ../debug/helper
} else {
TARGET = ../../release/tst_qlogging
!winrt: TEST_HELPER_INSTALLS = ../release/helper
}
} else {
TARGET = ../tst_qlogging
!winrt: TEST_HELPER_INSTALLS = ../helper
}
QT = core testlib
SOURCES = ../tst_qlogging.cpp
DEFINES += QT_MESSAGELOGCONTEXT
!winrt: TEST_HELPER_INSTALLS = ../app/app
DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0

View File

@ -64,7 +64,6 @@ private slots:
void formatLogMessage();
private:
QString m_appDir;
QStringList m_baseEnvironment;
};
@ -101,10 +100,6 @@ tst_qmessagehandler::tst_qmessagehandler()
void tst_qmessagehandler::initTestCase()
{
#if QT_CONFIG(process)
m_appDir = QFINDTESTDATA("app");
QVERIFY2(!m_appDir.isEmpty(), qPrintable(
QString::fromLatin1("Couldn't find helper app dir starting from %1.").arg(QDir::currentPath())));
m_baseEnvironment = QProcess::systemEnvironment();
for (int i = 0; i < m_baseEnvironment.count(); ++i) {
if (m_baseEnvironment.at(i).startsWith("QT_MESSAGE_PATTERN=")) {
@ -802,7 +797,7 @@ void tst_qmessagehandler::qMessagePattern_data()
#ifndef QT_NO_DEBUG
QTest::newRow("backtrace") << "[%{backtrace}] %{message}" << true << (QList<QByteArray>()
// MyClass::qt_static_metacall is explicitly marked as hidden in the Q_OBJECT macro
<< "[MyClass::myFunction|MyClass::mySlot1|?app?|" QT_NAMESPACE_STR "QMetaMethod::invoke|" QT_NAMESPACE_STR "QMetaObject::invokeMethod] from_a_function 34");
<< "[MyClass::myFunction|MyClass::mySlot1|?helper?|" QT_NAMESPACE_STR "QMetaMethod::invoke|" QT_NAMESPACE_STR "QMetaObject::invokeMethod] from_a_function 34");
#endif
QTest::newRow("backtrace depth,separator") << "[%{backtrace depth=2 separator=\"\n\"}] %{message}" << true << (QList<QByteArray>()
@ -823,7 +818,7 @@ void tst_qmessagehandler::qMessagePattern()
QFETCH(QList<QByteArray>, expected);
QProcess process;
const QString appExe = m_appDir + "/app";
const QString appExe(QLatin1String("helper"));
//
// test QT_MESSAGE_PATTERN
@ -866,7 +861,7 @@ void tst_qmessagehandler::setMessagePattern()
//
QProcess process;
const QString appExe = m_appDir + "/app";
const QString appExe(QLatin1String("helper"));
// make sure there is no QT_MESSAGE_PATTERN in the environment
QStringList environment = m_baseEnvironment;