diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/testlib/qabstracttestlogger.cpp | 24 | ||||
-rw-r--r-- | src/testlib/qabstracttestlogger_p.h | 3 | ||||
-rw-r--r-- | src/testlib/qplaintestlogger.cpp | 5 | ||||
-rw-r--r-- | src/testlib/qplaintestlogger_p.h | 3 | ||||
-rw-r--r-- | src/testlib/qtestlog.cpp | 32 |
5 files changed, 47 insertions, 20 deletions
diff --git a/src/testlib/qabstracttestlogger.cpp b/src/testlib/qabstracttestlogger.cpp index 8337600fa1..63c165b9dc 100644 --- a/src/testlib/qabstracttestlogger.cpp +++ b/src/testlib/qabstracttestlogger.cpp @@ -41,6 +41,7 @@ #include <QtTest/qtestassert.h> #include <QtCore/qbytearray.h> +#include <QtCore/qstring.h> #include <stdio.h> #include <stdlib.h> @@ -121,6 +122,29 @@ void QAbstractTestLogger::stopLogging() { } +void QAbstractTestLogger::addMessage(QtMsgType type, const QMessageLogContext &context, + const QString &message) +{ + QAbstractTestLogger::MessageTypes messageType = [=]() { + switch (type) { + case QtDebugMsg: return QAbstractTestLogger::QDebug; + case QtInfoMsg: return QAbstractTestLogger::QInfo; + case QtCriticalMsg: return QAbstractTestLogger::QSystem; + case QtWarningMsg: return QAbstractTestLogger::QWarning; + case QtFatalMsg: return QAbstractTestLogger::QFatal; + } + Q_UNREACHABLE(); + return QAbstractTestLogger::QFatal; + }(); + + QString formattedMessage = qFormatLogMessage(type, context, message); + + // Note that we explicitly ignore the file and line of the context here, + // as that's what QTest::messageHandler used to do when calling the same + // overload directly. + addMessage(messageType, formattedMessage); +} + namespace QTest { diff --git a/src/testlib/qabstracttestlogger_p.h b/src/testlib/qabstracttestlogger_p.h index e1fd5006b4..c4083b43f4 100644 --- a/src/testlib/qabstracttestlogger_p.h +++ b/src/testlib/qabstracttestlogger_p.h @@ -95,6 +95,9 @@ public: const char *file = 0, int line = 0) = 0; virtual void addBenchmarkResult(const QBenchmarkResult &result) = 0; + virtual void addMessage(QtMsgType, const QMessageLogContext &, + const QString &); + virtual void addMessage(MessageTypes type, const QString &message, const char *file = 0, int line = 0) = 0; diff --git a/src/testlib/qplaintestlogger.cpp b/src/testlib/qplaintestlogger.cpp index 25c9655691..4239882c4d 100644 --- a/src/testlib/qplaintestlogger.cpp +++ b/src/testlib/qplaintestlogger.cpp @@ -399,6 +399,11 @@ void QPlainTestLogger::addBenchmarkResult(const QBenchmarkResult &result) printBenchmarkResult(result); } +void QPlainTestLogger::addMessage(QtMsgType type, const QMessageLogContext &context, const QString &message) +{ + QAbstractTestLogger::addMessage(type, context, message); +} + void QPlainTestLogger::addMessage(MessageTypes type, const QString &message, const char *file, int line) { diff --git a/src/testlib/qplaintestlogger_p.h b/src/testlib/qplaintestlogger_p.h index 93d3c7143a..55755830b2 100644 --- a/src/testlib/qplaintestlogger_p.h +++ b/src/testlib/qplaintestlogger_p.h @@ -71,6 +71,9 @@ public: const char *file = 0, int line = 0) override; void addBenchmarkResult(const QBenchmarkResult &result) override; + void addMessage(QtMsgType, const QMessageLogContext &, + const QString &) override; + void addMessage(MessageTypes type, const QString &message, const char *file = 0, int line = 0) override; diff --git a/src/testlib/qtestlog.cpp b/src/testlib/qtestlog.cpp index 5bbf2c6458..4964c6538e 100644 --- a/src/testlib/qtestlog.cpp +++ b/src/testlib/qtestlog.cpp @@ -220,6 +220,12 @@ namespace QTest { FOREACH_LOGGER(logger->addBenchmarkResult(result)); } + static void addMessage(QtMsgType type, const QMessageLogContext &context, + const QString &message) + { + FOREACH_LOGGER(logger->addMessage(type, context, message)); + } + static void addMessage(QAbstractTestLogger::MessageTypes type, const QString &message, const char *file = 0, int line = 0) { @@ -289,11 +295,10 @@ namespace QTest { QTEST_ASSERT(QTest::TestLoggers::loggerCount() != 0); } - if (handleIgnoredMessage(type, message)) + if (handleIgnoredMessage(type, message)) { // the message is expected, so just swallow it. return; - - QString msg = qFormatLogMessage(type, context, message); + } if (type != QtFatalMsg) { if (counter.load() <= 0) @@ -306,22 +311,10 @@ namespace QTest { } } - switch (type) { - case QtDebugMsg: - QTest::TestLoggers::addMessage(QAbstractTestLogger::QDebug, msg); - break; - case QtInfoMsg: - QTest::TestLoggers::addMessage(QAbstractTestLogger::QInfo, msg); - break; - case QtCriticalMsg: - QTest::TestLoggers::addMessage(QAbstractTestLogger::QSystem, msg); - break; - case QtWarningMsg: - QTest::TestLoggers::addMessage(QAbstractTestLogger::QWarning, msg); - break; - case QtFatalMsg: - QTest::TestLoggers::addMessage(QAbstractTestLogger::QFatal, msg); - /* Right now, we're inside the custom message handler and we're + QTest::TestLoggers::addMessage(type, context, message); + + if (type == QtFatalMsg) { + /* Right now, we're inside the custom message handler and we're * being qt_message_output in qglobal.cpp. After we return from * this function, it will proceed with calling exit() and abort() * and hence crash. Therefore, we call these logging functions such @@ -329,7 +322,6 @@ namespace QTest { QTestResult::addFailure("Received a fatal error.", "Unknown file", 0); QTestLog::leaveTestFunction(); QTestLog::stopLogging(); - break; } } } |