204void QAbstractTestLogger::outputString(
const char *msg)
206 QTEST_ASSERT(stream);
209#if defined(Q_OS_WINDOWS)
210#define isatty _isatty
211#define fileno _fileno
214 if (isatty(fileno(stream))) {
215 ::fputs(msg, stream);
218 char *filtered =
new char[strlen(msg) + 1];
219 strcpy(filtered, msg);
220 filterUnprintable(filtered);
221 ::fputs(filtered, stream);
226#if defined(Q_OS_WINDOWS)
386void QAbstractTestLogger::addMessage(QtMsgType type,
const QMessageLogContext &context,
387 const QString &message)
389 QAbstractTestLogger::MessageTypes messageType = [=]() {
391 case QtDebugMsg:
return QAbstractTestLogger::QDebug;
392 case QtInfoMsg:
return QAbstractTestLogger::QInfo;
393 case QtCriticalMsg:
return QAbstractTestLogger::QCritical;
394 case QtWarningMsg:
return QAbstractTestLogger::QWarning;
395 case QtFatalMsg:
return QAbstractTestLogger::QFatal;
397 Q_UNREACHABLE_RETURN(QAbstractTestLogger::QFatal);
400 QString formattedMessage = qFormatLogMessage(type, context, message);
405 addMessage(messageType, formattedMessage);
456 const QTestResult::IdentifierLocker locker;
458 const char *function = locker.testFunction() ? locker.testFunction() :
"UnknownTestFunc";
459 const char *testObject = parts & TestObject ? locker.objectName() :
"";
460 const char *testFunction = parts & TestFunction ? function :
"";
461 const char *objectFunctionFiller = parts & TestObject && parts & (TestFunction | TestDataTag) ?
"::" :
"";
462 const char *testFuctionStart = parts & TestFunction ?
"(" :
"";
463 const char *testFuctionEnd = parts & TestFunction ?
")" :
"";
465 const char *dataTag = (parts & TestDataTag) && locker.dataTag() ? locker.dataTag() :
"";
466 const char *globalDataTag =
467 (parts & TestDataTag) && locker.globalDataTag() ? locker.globalDataTag() :
"";
468 const char *tagFiller = (dataTag[0] && globalDataTag[0]) ?
":" :
"";
471 testObject, objectFunctionFiller, testFunction, testFuctionStart,
472 globalDataTag, tagFiller, dataTag, testFuctionEnd);
478 const auto bufsize = [](
const QTestCharBuffer &buf) ->
int {
479 const int max = buf.size();
480 return max > 0 ?
int(qstrnlen(buf.constData(), max)) : 0;
482 const int extra = bufsize(more);
486 const int oldsize = bufsize(*accumulator);
487 const int newsize = oldsize + extra + 1;
488 if (newsize > MAXSIZE || !accumulator->resize(newsize))
491 char *tail = accumulator->data() + oldsize;
492 memcpy(tail, more.constData(), extra);