202void QAbstractTestLogger::outputString(
const char *msg)
204 QTEST_ASSERT(stream);
207#if defined(Q_OS_WINDOWS)
208#define isatty _isatty
209#define fileno _fileno
212 if (isatty(fileno(stream))) {
213 ::fputs(msg, stream);
216 char *filtered =
new char[strlen(msg) + 1];
217 strcpy(filtered, msg);
218 filterUnprintable(filtered);
219 ::fputs(filtered, stream);
224#if defined(Q_OS_WINDOWS)
384void QAbstractTestLogger::addMessage(QtMsgType type,
const QMessageLogContext &context,
385 const QString &message)
387 QAbstractTestLogger::MessageTypes messageType = [=]() {
389 case QtDebugMsg:
return QAbstractTestLogger::QDebug;
390 case QtInfoMsg:
return QAbstractTestLogger::QInfo;
391 case QtCriticalMsg:
return QAbstractTestLogger::QCritical;
392 case QtWarningMsg:
return QAbstractTestLogger::QWarning;
393 case QtFatalMsg:
return QAbstractTestLogger::QFatal;
395 Q_UNREACHABLE_RETURN(QAbstractTestLogger::QFatal);
398 QString formattedMessage = qFormatLogMessage(type, context, message);
403 addMessage(messageType, formattedMessage);
452 const char *testObject = parts & TestObject ? QTestResult::currentTestObjectName() :
"";
453 const char *testFunction = parts & TestFunction ? (QTestResult::currentTestFunction() ? QTestResult::currentTestFunction() :
"UnknownTestFunc") :
"";
454 const char *objectFunctionFiller = parts & TestObject && parts & (TestFunction | TestDataTag) ?
"::" :
"";
455 const char *testFuctionStart = parts & TestFunction ?
"(" :
"";
456 const char *testFuctionEnd = parts & TestFunction ?
")" :
"";
458 const char *dataTag = (parts & TestDataTag) && QTestResult::currentDataTag() ? QTestResult::currentDataTag() :
"";
459 const char *globalDataTag = (parts & TestDataTag) && QTestResult::currentGlobalDataTag() ? QTestResult::currentGlobalDataTag() :
"";
460 const char *tagFiller = (dataTag[0] && globalDataTag[0]) ?
":" :
"";
463 testObject, objectFunctionFiller, testFunction, testFuctionStart,
464 globalDataTag, tagFiller, dataTag, testFuctionEnd);
470 const auto bufsize = [](
const QTestCharBuffer &buf) ->
int {
471 const int max = buf.size();
472 return max > 0 ?
int(qstrnlen(buf.constData(), max)) : 0;
474 const int extra = bufsize(more);
478 const int oldsize = bufsize(*accumulator);
479 const int newsize = oldsize + extra + 1;
480 if (newsize > MAXSIZE || !accumulator->resize(newsize))
483 char *tail = accumulator->data() + oldsize;
484 memcpy(tail, more.constData(), extra);