testlib: Pass on log message context to loggers
Change-Id: I1e0bb09d4f96b45f1e9757ea25ae3aba1ae42447 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
This commit is contained in:
parent
9395f35cb1
commit
2acfc48de5
@ -41,6 +41,7 @@
|
|||||||
#include <QtTest/qtestassert.h>
|
#include <QtTest/qtestassert.h>
|
||||||
|
|
||||||
#include <QtCore/qbytearray.h>
|
#include <QtCore/qbytearray.h>
|
||||||
|
#include <QtCore/qstring.h>
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.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
|
namespace QTest
|
||||||
{
|
{
|
||||||
|
|
||||||
|
@ -95,6 +95,9 @@ public:
|
|||||||
const char *file = 0, int line = 0) = 0;
|
const char *file = 0, int line = 0) = 0;
|
||||||
virtual void addBenchmarkResult(const QBenchmarkResult &result) = 0;
|
virtual void addBenchmarkResult(const QBenchmarkResult &result) = 0;
|
||||||
|
|
||||||
|
virtual void addMessage(QtMsgType, const QMessageLogContext &,
|
||||||
|
const QString &);
|
||||||
|
|
||||||
virtual void addMessage(MessageTypes type, const QString &message,
|
virtual void addMessage(MessageTypes type, const QString &message,
|
||||||
const char *file = 0, int line = 0) = 0;
|
const char *file = 0, int line = 0) = 0;
|
||||||
|
|
||||||
|
@ -399,6 +399,11 @@ void QPlainTestLogger::addBenchmarkResult(const QBenchmarkResult &result)
|
|||||||
printBenchmarkResult(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,
|
void QPlainTestLogger::addMessage(MessageTypes type, const QString &message,
|
||||||
const char *file, int line)
|
const char *file, int line)
|
||||||
{
|
{
|
||||||
|
@ -71,6 +71,9 @@ public:
|
|||||||
const char *file = 0, int line = 0) override;
|
const char *file = 0, int line = 0) override;
|
||||||
void addBenchmarkResult(const QBenchmarkResult &result) override;
|
void addBenchmarkResult(const QBenchmarkResult &result) override;
|
||||||
|
|
||||||
|
void addMessage(QtMsgType, const QMessageLogContext &,
|
||||||
|
const QString &) override;
|
||||||
|
|
||||||
void addMessage(MessageTypes type, const QString &message,
|
void addMessage(MessageTypes type, const QString &message,
|
||||||
const char *file = 0, int line = 0) override;
|
const char *file = 0, int line = 0) override;
|
||||||
|
|
||||||
|
@ -220,6 +220,12 @@ namespace QTest {
|
|||||||
FOREACH_LOGGER(logger->addBenchmarkResult(result));
|
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,
|
static void addMessage(QAbstractTestLogger::MessageTypes type, const QString &message,
|
||||||
const char *file = 0, int line = 0)
|
const char *file = 0, int line = 0)
|
||||||
{
|
{
|
||||||
@ -289,11 +295,10 @@ namespace QTest {
|
|||||||
QTEST_ASSERT(QTest::TestLoggers::loggerCount() != 0);
|
QTEST_ASSERT(QTest::TestLoggers::loggerCount() != 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (handleIgnoredMessage(type, message))
|
if (handleIgnoredMessage(type, message)) {
|
||||||
// the message is expected, so just swallow it.
|
// the message is expected, so just swallow it.
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
QString msg = qFormatLogMessage(type, context, message);
|
|
||||||
|
|
||||||
if (type != QtFatalMsg) {
|
if (type != QtFatalMsg) {
|
||||||
if (counter.load() <= 0)
|
if (counter.load() <= 0)
|
||||||
@ -306,22 +311,10 @@ namespace QTest {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (type) {
|
QTest::TestLoggers::addMessage(type, context, message);
|
||||||
case QtDebugMsg:
|
|
||||||
QTest::TestLoggers::addMessage(QAbstractTestLogger::QDebug, msg);
|
if (type == QtFatalMsg) {
|
||||||
break;
|
/* Right now, we're inside the custom message handler and we're
|
||||||
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
|
|
||||||
* being qt_message_output in qglobal.cpp. After we return from
|
* being qt_message_output in qglobal.cpp. After we return from
|
||||||
* this function, it will proceed with calling exit() and abort()
|
* this function, it will proceed with calling exit() and abort()
|
||||||
* and hence crash. Therefore, we call these logging functions such
|
* 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);
|
QTestResult::addFailure("Received a fatal error.", "Unknown file", 0);
|
||||||
QTestLog::leaveTestFunction();
|
QTestLog::leaveTestFunction();
|
||||||
QTestLog::stopLogging();
|
QTestLog::stopLogging();
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user