summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/testlib/qabstracttestlogger.cpp24
-rw-r--r--src/testlib/qabstracttestlogger_p.h3
-rw-r--r--src/testlib/qplaintestlogger.cpp5
-rw-r--r--src/testlib/qplaintestlogger_p.h3
-rw-r--r--src/testlib/qtestlog.cpp32
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;
}
}
}