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);
454 const QTestResult::IdentifierLocker locker;
456 const char *function = locker.testFunction() ? locker.testFunction() :
"UnknownTestFunc";
457 const char *testObject = parts & TestObject ? locker.objectName() :
"";
458 const char *testFunction = parts & TestFunction ? function :
"";
459 const char *objectFunctionFiller = parts & TestObject && parts & (TestFunction | TestDataTag) ?
"::" :
"";
460 const char *testFuctionStart = parts & TestFunction ?
"(" :
"";
461 const char *testFuctionEnd = parts & TestFunction ?
")" :
"";
463 const char *dataTag = (parts & TestDataTag) && locker.dataTag() ? locker.dataTag() :
"";
464 const char *globalDataTag =
465 (parts & TestDataTag) && locker.globalDataTag() ? locker.globalDataTag() :
"";
466 const char *tagFiller = (dataTag[0] && globalDataTag[0]) ?
":" :
"";
469 testObject, objectFunctionFiller, testFunction, testFuctionStart,
470 globalDataTag, tagFiller, dataTag, testFuctionEnd);
476 const auto bufsize = [](
const QTestCharBuffer &buf) ->
int {
477 const int max = buf.size();
478 return max > 0 ?
int(qstrnlen(buf.constData(), max)) : 0;
480 const int extra = bufsize(more);
484 const int oldsize = bufsize(*accumulator);
485 const int newsize = oldsize + extra + 1;
486 if (newsize > MAXSIZE || !accumulator->resize(newsize))
489 char *tail = accumulator->data() + oldsize;
490 memcpy(tail, more.constData(), extra);