summaryrefslogtreecommitdiffstats
path: root/src/testlib/qabstracttestlogger_p.h
diff options
context:
space:
mode:
authorEdward Welbourne <edward.welbourne@qt.io>2022-03-14 19:16:51 +0100
committerEdward Welbourne <edward.welbourne@qt.io>2022-03-29 00:05:12 +0100
commitae37fa0464694c9770bd35472e2afac83a74564c (patch)
tree28a4b3ff158b4829d8dcddae850eacf74976c321 /src/testlib/qabstracttestlogger_p.h
parentd329a98fa9fade95537a6ff35b5898611cfadd0b (diff)
TAP test logger: move messages into the diagnostics block
Our TAP output was delivering messages as comments before the test line, where TAP clearly expects the details of a test to follow its test line. Version 13 provides a YAML block to deliver diagnostics and encourages use of this, so accumulate our messages in a QTestCharBuffer instead of emitting them one by one. However, messages produced after a test has produced its test line belong to that test, but are too late to be included in its diagnostics block, so should be emitted immediately as before, albeit now with a type prefix. This at least separates such messages, from the end of one test, from messages produced early in the next. In the process, add a type-prefix to each, to make clear what type of message it was. Since the Yamlish supported by TAP consumers doesn't support a way to have many messages, use the extensions: top-level hash tag with a messages: sub-tag to gather our messages as a list. (This expands at least one expected output file significantly and substantially rewrites some others.) Add methods to QTestCharBuffer, and a helper function, to support this. Task-number: QTBUG-96844 Change-Id: If44a33da5879ed1670ef0980042599afd516f9d2 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
Diffstat (limited to 'src/testlib/qabstracttestlogger_p.h')
-rw-r--r--src/testlib/qabstracttestlogger_p.h15
1 files changed, 13 insertions, 2 deletions
diff --git a/src/testlib/qabstracttestlogger_p.h b/src/testlib/qabstracttestlogger_p.h
index 31fc3d60ba..d645340c61 100644
--- a/src/testlib/qabstracttestlogger_p.h
+++ b/src/testlib/qabstracttestlogger_p.h
@@ -1,6 +1,6 @@
/****************************************************************************
**
-** Copyright (C) 2021 The Qt Company Ltd.
+** Copyright (C) 2022 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of the QtTest module of the Qt Toolkit.
@@ -53,6 +53,7 @@
#include <QtTest/qttestglobal.h>
#include <QtCore/private/qglobal_p.h>
+#include <QtCore/qbytearrayalgorithms.h>
#include <stdio.h>
#include <stdlib.h>
@@ -155,12 +156,14 @@ struct QTestCharBuffer
return _size;
}
- inline bool reset(int newSize)
+ bool reset(int newSize, bool copy = false)
{
char *newBuf = nullptr;
if (buf == staticBuf) {
// if we point to our internal buffer, we need to malloc first
newBuf = reinterpret_cast<char *>(malloc(newSize));
+ if (copy && newBuf)
+ qstrncpy(newBuf, buf, _size);
} else {
// if we already malloc'ed, just realloc
newBuf = reinterpret_cast<char *>(realloc(buf, newSize));
@@ -175,6 +178,13 @@ struct QTestCharBuffer
return true;
}
+ bool resize(int newSize) {
+ return newSize <= _size || reset(newSize, true);
+ }
+
+ void clear() { buf[0] = '\0'; }
+ bool isEmpty() { return buf[0] == '\0'; }
+
private:
int _size = InitialSize;
char* buf;
@@ -190,6 +200,7 @@ namespace QTestPrivate
{
enum IdentifierPart { TestObject = 0x1, TestFunction = 0x2, TestDataTag = 0x4, AllParts = 0xFFFF };
void Q_TESTLIB_EXPORT generateTestIdentifier(QTestCharBuffer *identifier, int parts = AllParts);
+ bool appendCharBuffer(QTestCharBuffer *accumulator, const QTestCharBuffer &more);
}
QT_END_NAMESPACE