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>
This commit is contained in:
Edward Welbourne 2022-03-14 19:16:51 +01:00
parent d329a98fa9
commit ae37fa0464
22 changed files with 4784 additions and 2310 deletions

View File

@ -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.
@ -399,6 +399,11 @@ void QAbstractTestLogger::addMessage(QtMsgType type, const QMessageLogContext &c
addMessage(messageType, formattedMessage);
}
namespace
{
constexpr int MAXSIZE = 1024 * 1024 * 2;
}
namespace QTest
{
@ -408,7 +413,6 @@ namespace QTest
*/
int qt_asprintf(QTestCharBuffer *str, const char *format, ...)
{
constexpr int MAXSIZE = 1024 * 1024 * 2;
Q_ASSERT(str);
int size = str->size();
Q_ASSERT(size > 0);
@ -456,6 +460,28 @@ void generateTestIdentifier(QTestCharBuffer *identifier, int parts)
globalDataTag, tagFiller, dataTag, testFuctionEnd);
}
// strcat() for QTestCharBuffer objects:
bool appendCharBuffer(QTestCharBuffer *accumulator, const QTestCharBuffer &more)
{
const auto bufsize = [](const QTestCharBuffer &buf) -> int {
const int max = buf.size();
return max > 0 ? int(qstrnlen(buf.constData(), max)) : 0;
};
const int extra = bufsize(more);
if (extra <= 0)
return true; // Nothing to do, fatuous success
const int oldsize = bufsize(*accumulator);
const int newsize = oldsize + extra + 1; // 1 for final '\0'
if (newsize > MAXSIZE || !accumulator->resize(newsize))
return false; // too big or unable to grow
char *tail = accumulator->data() + oldsize;
memcpy(tail, more.constData(), extra);
tail[extra] = '\0';
return true;
}
}
QT_END_NAMESPACE

View File

@ -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

View File

@ -164,33 +164,84 @@ void QTapTestLogger::stopLogging()
void QTapTestLogger::enterTestFunction(const char *function)
{
Q_UNUSED(function);
m_wasExpectedFail = false;
Q_ASSERT(!m_gatherMessages);
Q_ASSERT(!hasMessages());
m_gatherMessages = function != nullptr;
}
void QTapTestLogger::enterTestData(QTestData *data)
{
Q_UNUSED(data);
m_wasExpectedFail = false;
if (hasMessages())
flushMessages();
m_gatherMessages = data != nullptr;
}
using namespace QTestPrivate;
void QTapTestLogger::outputTestLine(bool ok, int testNumber, QTestCharBuffer &directive)
void QTapTestLogger::outputTestLine(bool ok, int testNumber, const QTestCharBuffer &directive)
{
QTestCharBuffer testIdentifier;
QTestPrivate::generateTestIdentifier(&testIdentifier, TestFunction | TestDataTag);
QTestCharBuffer testLine;
QTest::qt_asprintf(&testLine, "%s %d - %s%s\n",
ok ? "ok" : "not ok", testNumber, testIdentifier.data(), directive.data());
QTest::qt_asprintf(&testLine, "%s %d - %s%s\n", ok ? "ok" : "not ok",
testNumber, testIdentifier.data(), directive.constData());
outputString(testLine.data());
}
// The indent needs to be two spaces for maximum compatibility.
// This matches the width of the "- " prefix on a list item's first line.
#define YAML_INDENT " "
void QTapTestLogger::outputBuffer(const QTestCharBuffer &buffer)
{
if (!m_gatherMessages)
outputString(buffer.constData());
else if (buffer.constData()[strlen(YAML_INDENT)] == '#')
QTestPrivate::appendCharBuffer(&m_comments, buffer);
else
QTestPrivate::appendCharBuffer(&m_messages, buffer);
}
void QTapTestLogger::beginYamlish()
{
outputString(YAML_INDENT "---\n");
// Flush any accumulated messages:
if (!m_comments.isEmpty()) {
outputString(m_comments.constData());
m_comments.clear();
}
if (!m_messages.isEmpty()) {
outputString(YAML_INDENT "extensions:\n");
outputString(YAML_INDENT YAML_INDENT "messages:\n");
outputString(m_messages.constData());
m_messages.clear();
}
}
void QTapTestLogger::endYamlish()
{
outputString(YAML_INDENT "...\n");
}
void QTapTestLogger::flushMessages()
{
/* A _data() function's messages show up here. */
QTestCharBuffer dataLine;
QTest::qt_asprintf(&dataLine, "ok %d - %s() # Data prepared\n",
QTestLog::totalCount(), QTestResult::currentTestFunction());
outputString(dataLine.constData());
beginYamlish();
endYamlish();
}
void QTapTestLogger::addIncident(IncidentTypes type, const char *description,
const char *file, int line)
{
m_gatherMessages = false;
if (m_wasExpectedFail && (type == Pass || type == BlacklistedPass
|| type == XFail || type == BlacklistedXFail)) {
// XFail comes with a corresponding Pass incident, but we only want
@ -233,16 +284,12 @@ void QTapTestLogger::addIncident(IncidentTypes type, const char *description,
outputTestLine(ok, testNumber, directive);
if (!ok) {
// All failures need a diagnostics section to not confuse consumers
if (!ok || hasMessages()) {
// All failures need a diagnostics section to not confuse consumers.
// We also need a diagnostics section when we have messages to report.
beginYamlish();
// The indent needs to be two spaces for maximum compatibility.
// This matches the width of the "- " prefix on a list item's first line.
#define YAML_INDENT " "
outputString(YAML_INDENT "---\n");
if (type != XFail && type != BlacklistedXFail) {
if (!ok && type != XFail && type != BlacklistedXFail) {
#if QT_CONFIG(regularexpression)
// This is fragile, but unfortunately testlib doesn't plumb
// the expected and actual values to the loggers (yet).
@ -297,17 +344,17 @@ void QTapTestLogger::addIncident(IncidentTypes type, const char *description,
qPrintable(expected), qPrintable(actual)
);
outputString(diagnosticsYamlish.data());
outputBuffer(diagnosticsYamlish);
} else
#endif
if (description && !incident) {
QTestCharBuffer unparsableDescription;
QTest::qt_asprintf(&unparsableDescription, YAML_INDENT "# %s\n", description);
outputString(unparsableDescription.data());
outputBuffer(unparsableDescription);
}
}
if (file) {
if (!ok && file) {
QTestCharBuffer location;
QTest::qt_asprintf(&location,
// The generic 'at' key is understood by most consumers.
@ -322,10 +369,10 @@ void QTapTestLogger::addIncident(IncidentTypes type, const char *description,
QTestResult::currentTestFunction(),
file, line, file, line
);
outputString(location.data());
outputBuffer(location);
}
outputString(YAML_INDENT "...\n");
endYamlish();
}
}
@ -334,11 +381,38 @@ void QTapTestLogger::addMessage(MessageTypes type, const QString &message,
{
Q_UNUSED(file);
Q_UNUSED(line);
Q_UNUSED(type);
const char *const flavor = [type]() {
switch (type) {
case QDebug: return "debug";
case QInfo: return "info";
case QWarning: return "warning";
case QCritical: return "critical";
case QFatal: return "fatal";
// Handle internal messages as comments
case Info: return "# inform";
case Warn: return "# warn";
}
return "unrecognised message";
}();
QTestCharBuffer diagnostics;
QTest::qt_asprintf(&diagnostics, "# %s\n", qPrintable(message));
outputString(diagnostics.data());
QTestCharBuffer diagnostic;
if (!m_gatherMessages) {
QTest::qt_asprintf(&diagnostic, "%s%s: %s\n",
flavor[0] == '#' ? "" : "# ",
flavor, qPrintable(message));
outputString(diagnostic.constData());
} else if (flavor[0] == '#') {
QTest::qt_asprintf(&diagnostic, YAML_INDENT "%s: %s\n",
flavor, qPrintable(message));
QTestPrivate::appendCharBuffer(&m_comments, diagnostic);
} else {
// These shall appear in a messages: sub-block of the extensions: block,
// so triple-indent.
QTest::qt_asprintf(&diagnostic, YAML_INDENT YAML_INDENT "- severity: %s\n"
YAML_INDENT YAML_INDENT YAML_INDENT "message: %s\n",
flavor, qPrintable(message));
QTestPrivate::appendCharBuffer(&m_messages, diagnostic);
}
}
QT_END_NAMESPACE

View File

@ -1,6 +1,6 @@
/****************************************************************************
**
** Copyright (C) 2018 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.
@ -76,8 +76,16 @@ public:
void addBenchmarkResult(const QBenchmarkResult &) override {}
private:
void outputTestLine(bool ok, int testNumber, QTestCharBuffer &directive);
void outputTestLine(bool ok, int testNumber, const QTestCharBuffer &directive);
void outputBuffer(const QTestCharBuffer &buffer);
bool hasMessages() const { return m_comments.constData()[0] || m_messages.constData()[0]; }
void flushMessages();
void beginYamlish();
void endYamlish();
bool m_wasExpectedFail;
QTestCharBuffer m_comments;
QTestCharBuffer m_messages;
bool m_gatherMessages = false;
};
QT_END_NAMESPACE

View File

@ -2,9 +2,12 @@ TAP version 13
# tst_Assert
ok 1 - initTestCase()
ok 2 - testNumber1()
# ASSERT: "false" in file qtbase/tests/auto/testlib/selftests/assert/tst_assert.cpp, line 0
not ok 3 - testNumber2()
---
extensions:
messages:
- severity: fatal
message: ASSERT: "false" in file qtbase/tests/auto/testlib/selftests/assert/tst_assert.cpp, line 0
# Received a fatal error.
at: tst_Assert::testNumber2() (qtbase/tests/auto/testlib/selftests/assert/tst_assert.cpp:0)
file: qtbase/tests/auto/testlib/selftests/assert/tst_assert.cpp

View File

@ -1,8 +1,13 @@
TAP version 13
# tst_Blacklisted
ok 1 - initTestCase()
# This test should BPASS
ok 2 - pass() # TODO
---
extensions:
messages:
- severity: debug
message: This test should BPASS
...
ok 3 - skip() # SKIP This test should SKIP
not ok 4 - fail() # TODO 'false' returned FALSE. (This test should BFAIL)
---
@ -128,8 +133,13 @@ not ok 12 - xpassContinueFail() # TODO This fail should be seen and not counted
file: qtbase/tests/auto/testlib/selftests/blacklisted/tst_blacklisted.cpp
line: 0
...
# Totals should add up to 13: 2 passed, 0 failed, 3 skipped, 8 blacklisted
ok 13 - cleanupTestCase()
---
extensions:
messages:
- severity: debug
message: Totals should add up to 13: 2 passed, 0 failed, 3 skipped, 8 blacklisted
...
1..13
# tests 13
# pass 2

View File

@ -1,18 +1,30 @@
TAP version 13
# tst_DataTable
ok 1 - initTestCase()
# QVERIFY(test)
ok 2 - fiveTablePasses(fiveTablePasses_data1)
# QVERIFY(test)
---
# inform: QVERIFY(test)
...
ok 3 - fiveTablePasses(fiveTablePasses_data2)
# QVERIFY(test)
---
# inform: QVERIFY(test)
...
ok 4 - fiveTablePasses(fiveTablePasses_data3)
# QVERIFY(test)
---
# inform: QVERIFY(test)
...
ok 5 - fiveTablePasses(fiveTablePasses_data4)
# QVERIFY(test)
---
# inform: QVERIFY(test)
...
ok 6 - fiveTablePasses(fiveTablePasses_data5)
# QVERIFY(test)
---
# inform: QVERIFY(test)
...
ok 7 - fiveTablePasses(fiveTablePasses_data1)
---
# inform: QVERIFY(test)
...
ok 8 - cleanupTestCase()
1..8
# tests 8

View File

@ -95,9 +95,12 @@ not ok 21 - testFailInInit(fail)
...
ok 22 - testFailInInit(after)
ok 23 - testFailInCleanup(before)
# This test function should execute and then QFAIL in cleanup()
not ok 24 - testFailInCleanup(fail)
---
extensions:
messages:
- severity: debug
message: This test function should execute and then QFAIL in cleanup()
# Fail in cleanup()
at: tst_Counting::testFailInCleanup() (qtbase/tests/auto/testlib/selftests/counting/tst_counting.cpp:0)
file: qtbase/tests/auto/testlib/selftests/counting/tst_counting.cpp
@ -108,8 +111,13 @@ ok 26 - testSkipInInit(before)
ok 27 - testSkipInInit(skip) # SKIP Skip in init()
ok 28 - testSkipInInit(after)
ok 29 - testSkipInCleanup(before)
# This test function should execute and then QSKIP in cleanup()
ok 30 - testSkipInCleanup(skip) # SKIP Skip in cleanup()
---
extensions:
messages:
- severity: debug
message: This test function should execute and then QSKIP in cleanup()
...
ok 31 - testSkipInCleanup(after)
ok 32 - cleanupTestCase()
1..32

View File

@ -1,17 +1,23 @@
TAP version 13
# tst_ExpectFail
ok 1 - initTestCase()
# begin
not ok 2 - xfailAndContinue() # TODO This should xfail
---
extensions:
messages:
- severity: debug
message: begin
at: tst_ExpectFail::xfailAndContinue() (qtbase/tests/auto/testlib/selftests/expectfail/tst_expectfail.cpp:0)
file: qtbase/tests/auto/testlib/selftests/expectfail/tst_expectfail.cpp
line: 0
...
# after
# begin
# debug: after
not ok 3 - xfailAndAbort() # TODO This should xfail
---
extensions:
messages:
- severity: debug
message: begin
at: tst_ExpectFail::xfailAndAbort() (qtbase/tests/auto/testlib/selftests/expectfail/tst_expectfail.cpp:0)
file: qtbase/tests/auto/testlib/selftests/expectfail/tst_expectfail.cpp
line: 0
@ -113,10 +119,20 @@ not ok 23 - xfailDataDrivenWithQCompare(Fail Continue) # TODO This test should x
file: qtbase/tests/auto/testlib/selftests/expectfail/tst_expectfail.cpp
line: 0
...
# Should pass (*not* xpass), despite test-case name
ok 24 - xfailOnWrongRow(Fail Abort)
# Should pass (*not* xpass), despite test-case name
---
extensions:
messages:
- severity: debug
message: Should pass (*not* xpass), despite test-case name
...
ok 25 - xfailOnWrongRow(Fail Continue)
---
extensions:
messages:
- severity: debug
message: Should pass (*not* xpass), despite test-case name
...
not ok 26 - xfailOnAnyRow(Fail Abort) # TODO This test should xfail
---
at: tst_ExpectFail::xfailOnAnyRow() (qtbase/tests/auto/testlib/selftests/expectfail/tst_expectfail.cpp:0)
@ -129,21 +145,27 @@ not ok 27 - xfailOnAnyRow(Fail Continue) # TODO This test should xfail
file: qtbase/tests/auto/testlib/selftests/expectfail/tst_expectfail.cpp
line: 0
...
# Should fail (*not* xfail), despite test-case name
not ok 28 - xfailWithoutCheck(Fail Abort)
---
extensions:
messages:
- severity: debug
message: Should fail (*not* xfail), despite test-case name
# QEXPECT_FAIL was called without any subsequent verification statements
...
# Should fail (*not* xfail), despite test-case name
not ok 29 - xfailWithoutCheck(Fail Continue)
---
extensions:
messages:
- severity: debug
message: Should fail (*not* xfail), despite test-case name
# QEXPECT_FAIL was called without any subsequent verification statements
...
ok 30 - xpassAbort() # TODO 'true' returned TRUE unexpectedly. ()
ok 31 - xpassAbortSkip() # TODO 'true' returned TRUE unexpectedly. ()
ok 32 - xpassAbortXfailContinue() # TODO 'true' returned TRUE unexpectedly. ()
ok 33 - xpassContinue() # TODO 'true' returned TRUE unexpectedly. ()
# This should be reached
# debug: This should be reached
ok 34 - xpassContinueSkip() # TODO 'true' returned TRUE unexpectedly. ()
ok 34 - xpassContinueSkip() # SKIP This should be reached but not increment skip-count
ok 35 - xpassContinueXfailAbort() # TODO 'true' returned TRUE unexpectedly. ()
@ -156,17 +178,32 @@ not ok 36 - xpassContinueXfailAbort() # TODO This test should xfail but not add
ok 36 - xpassAbortDataDrivenWithQVerify(XPass) # TODO 'true' returned TRUE unexpectedly. ()
ok 37 - xpassAbortDataDrivenWithQVerify(Pass)
ok 38 - xpassContinueDataDrivenWithQVerify(XPass) # TODO 'true' returned TRUE unexpectedly. ()
# Test should Continue past XPASS
# Test should simply PASS
# debug: Test should Continue past XPASS
ok 39 - xpassContinueDataDrivenWithQVerify(Pass)
---
extensions:
messages:
- severity: debug
message: Test should simply PASS
...
ok 40 - xpassAbortDataDrivenWithQCompare(XPass) # TODO QCOMPARE(1, 1) returned TRUE unexpectedly.
ok 41 - xpassAbortDataDrivenWithQCompare(Pass)
ok 42 - xpassContinueDataDrivenWithQCompare(XPass) # TODO QCOMPARE(1, 1) returned TRUE unexpectedly.
# Test should Continue past XPASS
# Test should simply PASS
# debug: Test should Continue past XPASS
ok 43 - xpassContinueDataDrivenWithQCompare(Pass)
# Totals should add up to 44: 23 passed, 17 failed, 4 skipped
---
extensions:
messages:
- severity: debug
message: Test should simply PASS
...
ok 44 - cleanupTestCase()
---
extensions:
messages:
- severity: debug
message: Totals should add up to 44: 23 passed, 17 failed, 4 skipped
...
1..44
# tests 44
# pass 23

View File

@ -1,10 +1,14 @@
TAP version 13
# tst_FailDataType
ok 1 - initTestCase()
# expected data of type 'QString', got 'bool' for element 0 of data with tag 'bool-as-string'
# ASSERT: "false" in file qtbase/src/testlib/qtestdata.cpp, line 0
not ok 2 - value()
---
extensions:
messages:
- severity: debug
message: expected data of type 'QString', got 'bool' for element 0 of data with tag 'bool-as-string'
- severity: fatal
message: ASSERT: "false" in file qtbase/src/testlib/qtestdata.cpp, line 0
# Received a fatal error.
at: tst_FailDataType::value() (qtbase/src/testlib/qtestdata.cpp:0)
file: qtbase/src/testlib/qtestdata.cpp

View File

@ -1,9 +1,12 @@
TAP version 13
# tst_FailFetchType
ok 1 - initTestCase()
# Requested type 'QString' does not match available type 'bool'.
not ok 2 - fetch(bool)
---
extensions:
messages:
- severity: fatal
message: Requested type 'QString' does not match available type 'bool'.
# Received a fatal error.
...
1..2

View File

@ -1,9 +1,12 @@
TAP version 13
# tst_FetchBogus
ok 1 - initTestCase()
# QFETCH: Requested testdata 'bubu' not available, check your _data function.
not ok 2 - fetchBogus(foo)
---
extensions:
messages:
- severity: fatal
message: QFETCH: Requested testdata 'bubu' not available, check your _data function.
# Received a fatal error.
...
1..2

View File

@ -1,8 +1,10 @@
TAP version 13
# FindTestData
ok 1 - initTestCase()
# testdata testfile could not be located!
ok 2 - paths()
---
# warn: testdata testfile could not be located!
...
ok 3 - cleanupTestCase()
1..3
# tests 3

View File

@ -1,56 +1,142 @@
TAP version 13
# tst_globaldata
# initTestCase initTestCase (null)
ok 1 - initTestCase()
# init testGlobal local=false
# global: false
# local: false
# cleanup testGlobal local=false
---
extensions:
messages:
- severity: debug
message: initTestCase initTestCase (null)
...
ok 2 - testGlobal(global=false:local=false)
# init testGlobal local=true
# global: false
# local: true
# cleanup testGlobal local=true
---
extensions:
messages:
- severity: debug
message: init testGlobal local=false
- severity: debug
message: global: false
- severity: debug
message: local: false
- severity: debug
message: cleanup testGlobal local=false
...
ok 3 - testGlobal(global=false:local=true)
# init testGlobal local=false
# global: true
# local: false
# cleanup testGlobal local=false
---
extensions:
messages:
- severity: debug
message: init testGlobal local=true
- severity: debug
message: global: false
- severity: debug
message: local: true
- severity: debug
message: cleanup testGlobal local=true
...
ok 4 - testGlobal(global=true:local=false)
# init testGlobal local=true
# global: true
# local: true
# cleanup testGlobal local=true
---
extensions:
messages:
- severity: debug
message: init testGlobal local=false
- severity: debug
message: global: true
- severity: debug
message: local: false
- severity: debug
message: cleanup testGlobal local=false
...
ok 5 - testGlobal(global=true:local=true)
---
extensions:
messages:
- severity: debug
message: init testGlobal local=true
- severity: debug
message: global: true
- severity: debug
message: local: true
- severity: debug
message: cleanup testGlobal local=true
...
ok 6 - skip(global=false) # SKIP skipping
# init skipLocal local=false
ok 7 - skipLocal(global=false:local=false) # SKIP skipping
# cleanup skipLocal local=false
# init skipLocal local=true
---
extensions:
messages:
- severity: debug
message: init skipLocal local=false
...
# debug: cleanup skipLocal local=false
ok 8 - skipLocal(global=false:local=true) # SKIP skipping
# cleanup skipLocal local=true
# init skipLocal local=false
---
extensions:
messages:
- severity: debug
message: init skipLocal local=true
...
# debug: cleanup skipLocal local=true
ok 9 - skipLocal(global=true:local=false) # SKIP skipping
# cleanup skipLocal local=false
# init skipLocal local=true
---
extensions:
messages:
- severity: debug
message: init skipLocal local=false
...
# debug: cleanup skipLocal local=false
ok 10 - skipLocal(global=true:local=true) # SKIP skipping
# cleanup skipLocal local=true
# init skipSingle local=false
# global: false local: false
# cleanup skipSingle local=false
---
extensions:
messages:
- severity: debug
message: init skipLocal local=true
...
# debug: cleanup skipLocal local=true
ok 11 - skipSingle(global=false:local=false)
# init skipSingle local=true
---
extensions:
messages:
- severity: debug
message: init skipSingle local=false
- severity: debug
message: global: false local: false
- severity: debug
message: cleanup skipSingle local=false
...
ok 12 - skipSingle(global=false:local=true) # SKIP Skipping
# cleanup skipSingle local=true
# init skipSingle local=false
---
extensions:
messages:
- severity: debug
message: init skipSingle local=true
...
# debug: cleanup skipSingle local=true
ok 13 - skipSingle(global=true:local=false) # SKIP Skipping
# cleanup skipSingle local=false
# init skipSingle local=true
# global: true local: true
# cleanup skipSingle local=true
---
extensions:
messages:
- severity: debug
message: init skipSingle local=false
...
# debug: cleanup skipSingle local=false
ok 14 - skipSingle(global=true:local=true)
# cleanupTestCase cleanupTestCase (null)
---
extensions:
messages:
- severity: debug
message: init skipSingle local=true
- severity: debug
message: global: true local: true
- severity: debug
message: cleanup skipSingle local=true
...
ok 15 - cleanupTestCase()
---
extensions:
messages:
- severity: debug
message: cleanupTestCase cleanupTestCase (null)
...
1..15
# tests 15
# pass 8

File diff suppressed because it is too large Load Diff

View File

@ -1,149 +1,187 @@
TAP version 13
# tst_Signaldumper
ok 1 - initTestCase()
# Signal: SignalSlotClass(_POINTER_) signalWithoutParameters ()
# Signal: SignalSlotClass(_POINTER_) signalWithParameters (int(242), char(m))
ok 2 - noConnections()
# Signal: SignalSlotClass(_POINTER_) signalWithoutParameters ()
# Signal: QEventDispatcherPlatform(_POINTER_) awake ()
# Signal: SignalSlotClass(_POINTER_) signalWithParameters (int(242), char(m))
# Signal: QEventDispatcherPlatform(_POINTER_) awake ()
# Signal: SignalSlotClass(_POINTER_) signalWithParameters (int(242), char(m))
# Signal: QEventDispatcherPlatform(_POINTER_) awake ()
---
# inform: Signal: SignalSlotClass(_POINTER_) signalWithoutParameters ()
# inform: Signal: SignalSlotClass(_POINTER_) signalWithParameters (int(242), char(m))
...
ok 3 - oneSlot(direct)
# Signal: SignalSlotClass(_POINTER_) signalWithoutParameters ()
# Signal: QEventDispatcherPlatform(_POINTER_) awake ()
# Signal: SignalSlotClass(_POINTER_) signalWithParameters (int(242), char(m))
# Signal: QEventDispatcherPlatform(_POINTER_) awake ()
# Signal: SignalSlotClass(_POINTER_) signalWithParameters (int(242), char(m))
# Signal: QEventDispatcherPlatform(_POINTER_) awake ()
---
# inform: Signal: SignalSlotClass(_POINTER_) signalWithoutParameters ()
# inform: Signal: QEventDispatcherPlatform(_POINTER_) awake ()
# inform: Signal: SignalSlotClass(_POINTER_) signalWithParameters (int(242), char(m))
# inform: Signal: QEventDispatcherPlatform(_POINTER_) awake ()
# inform: Signal: SignalSlotClass(_POINTER_) signalWithParameters (int(242), char(m))
# inform: Signal: QEventDispatcherPlatform(_POINTER_) awake ()
...
ok 4 - oneSlot(queued)
# Signal: SignalSlotClass(_POINTER_) signalWithoutParameters ()
# Slot: SignalSlotClass(_POINTER_) slotWithoutParameters()
# Signal: QEventDispatcherPlatform(_POINTER_) awake ()
# Signal: SignalSlotClass(_POINTER_) signalWithParameters (int(242), char(m))
# Slot: SignalSlotClass(_POINTER_) slotWithParameters(int,char)
# Signal: QEventDispatcherPlatform(_POINTER_) awake ()
# Signal: SignalSlotClass(_POINTER_) signalWithParameters (int(242), char(m))
# Slot: SignalSlotClass(_POINTER_) slotWithoutParameters()
# Signal: QEventDispatcherPlatform(_POINTER_) awake ()
---
# inform: Signal: SignalSlotClass(_POINTER_) signalWithoutParameters ()
# inform: Signal: QEventDispatcherPlatform(_POINTER_) awake ()
# inform: Signal: SignalSlotClass(_POINTER_) signalWithParameters (int(242), char(m))
# inform: Signal: QEventDispatcherPlatform(_POINTER_) awake ()
# inform: Signal: SignalSlotClass(_POINTER_) signalWithParameters (int(242), char(m))
# inform: Signal: QEventDispatcherPlatform(_POINTER_) awake ()
...
ok 5 - oneSlotOldSyntax(direct)
# Signal: SignalSlotClass(_POINTER_) signalWithoutParameters ()
# Signal: QEventDispatcherPlatform(_POINTER_) awake ()
# Signal: SignalSlotClass(_POINTER_) signalWithParameters (int(242), char(m))
# Signal: QEventDispatcherPlatform(_POINTER_) awake ()
# Signal: SignalSlotClass(_POINTER_) signalWithParameters (int(242), char(m))
# Signal: QEventDispatcherPlatform(_POINTER_) awake ()
---
# inform: Signal: SignalSlotClass(_POINTER_) signalWithoutParameters ()
# inform: Slot: SignalSlotClass(_POINTER_) slotWithoutParameters()
# inform: Signal: QEventDispatcherPlatform(_POINTER_) awake ()
# inform: Signal: SignalSlotClass(_POINTER_) signalWithParameters (int(242), char(m))
# inform: Slot: SignalSlotClass(_POINTER_) slotWithParameters(int,char)
# inform: Signal: QEventDispatcherPlatform(_POINTER_) awake ()
# inform: Signal: SignalSlotClass(_POINTER_) signalWithParameters (int(242), char(m))
# inform: Slot: SignalSlotClass(_POINTER_) slotWithoutParameters()
# inform: Signal: QEventDispatcherPlatform(_POINTER_) awake ()
...
ok 6 - oneSlotOldSyntax(queued)
# Signal: SignalSlotClass(_POINTER_) signalWithoutParameters ()
# Signal: QEventDispatcherPlatform(_POINTER_) awake ()
# Signal: SignalSlotClass(_POINTER_) signalWithParameters (int(242), char(m))
# Signal: QEventDispatcherPlatform(_POINTER_) awake ()
# Signal: SignalSlotClass(_POINTER_) signalWithParameters (int(242), char(m))
# Signal: QEventDispatcherPlatform(_POINTER_) awake ()
---
# inform: Signal: SignalSlotClass(_POINTER_) signalWithoutParameters ()
# inform: Signal: QEventDispatcherPlatform(_POINTER_) awake ()
# inform: Signal: SignalSlotClass(_POINTER_) signalWithParameters (int(242), char(m))
# inform: Signal: QEventDispatcherPlatform(_POINTER_) awake ()
# inform: Signal: SignalSlotClass(_POINTER_) signalWithParameters (int(242), char(m))
# inform: Signal: QEventDispatcherPlatform(_POINTER_) awake ()
...
ok 7 - twoSlots(direct)
# Signal: SignalSlotClass(_POINTER_) signalWithoutParameters ()
# Signal: QEventDispatcherPlatform(_POINTER_) awake ()
# Signal: SignalSlotClass(_POINTER_) signalWithParameters (int(242), char(m))
# Signal: QEventDispatcherPlatform(_POINTER_) awake ()
# Signal: SignalSlotClass(_POINTER_) signalWithParameters (int(242), char(m))
# Signal: QEventDispatcherPlatform(_POINTER_) awake ()
---
# inform: Signal: SignalSlotClass(_POINTER_) signalWithoutParameters ()
# inform: Signal: QEventDispatcherPlatform(_POINTER_) awake ()
# inform: Signal: SignalSlotClass(_POINTER_) signalWithParameters (int(242), char(m))
# inform: Signal: QEventDispatcherPlatform(_POINTER_) awake ()
# inform: Signal: SignalSlotClass(_POINTER_) signalWithParameters (int(242), char(m))
# inform: Signal: QEventDispatcherPlatform(_POINTER_) awake ()
...
ok 8 - twoSlots(queued)
# Signal: SignalSlotClass(_POINTER_) signalWithoutParameters ()
# Slot: SignalSlotClass(_POINTER_) slotWithoutParameters()
# Slot: SignalSlotClass(_POINTER_) slotWithoutParameters()
# Signal: QEventDispatcherPlatform(_POINTER_) awake ()
# Signal: SignalSlotClass(_POINTER_) signalWithParameters (int(242), char(m))
# Slot: SignalSlotClass(_POINTER_) slotWithParameters(int,char)
# Slot: SignalSlotClass(_POINTER_) slotWithParameters(int,char)
# Signal: QEventDispatcherPlatform(_POINTER_) awake ()
# Signal: SignalSlotClass(_POINTER_) signalWithParameters (int(242), char(m))
# Slot: SignalSlotClass(_POINTER_) slotWithoutParameters()
# Slot: SignalSlotClass(_POINTER_) slotWithoutParameters()
# Signal: QEventDispatcherPlatform(_POINTER_) awake ()
---
# inform: Signal: SignalSlotClass(_POINTER_) signalWithoutParameters ()
# inform: Signal: QEventDispatcherPlatform(_POINTER_) awake ()
# inform: Signal: SignalSlotClass(_POINTER_) signalWithParameters (int(242), char(m))
# inform: Signal: QEventDispatcherPlatform(_POINTER_) awake ()
# inform: Signal: SignalSlotClass(_POINTER_) signalWithParameters (int(242), char(m))
# inform: Signal: QEventDispatcherPlatform(_POINTER_) awake ()
...
ok 9 - twoSlotsOldSyntax(direct)
# Signal: SignalSlotClass(_POINTER_) signalWithoutParameters ()
# Signal: QEventDispatcherPlatform(_POINTER_) awake ()
# Signal: SignalSlotClass(_POINTER_) signalWithParameters (int(242), char(m))
# Signal: QEventDispatcherPlatform(_POINTER_) awake ()
# Signal: SignalSlotClass(_POINTER_) signalWithParameters (int(242), char(m))
# Signal: QEventDispatcherPlatform(_POINTER_) awake ()
---
# inform: Signal: SignalSlotClass(_POINTER_) signalWithoutParameters ()
# inform: Slot: SignalSlotClass(_POINTER_) slotWithoutParameters()
# inform: Slot: SignalSlotClass(_POINTER_) slotWithoutParameters()
# inform: Signal: QEventDispatcherPlatform(_POINTER_) awake ()
# inform: Signal: SignalSlotClass(_POINTER_) signalWithParameters (int(242), char(m))
# inform: Slot: SignalSlotClass(_POINTER_) slotWithParameters(int,char)
# inform: Slot: SignalSlotClass(_POINTER_) slotWithParameters(int,char)
# inform: Signal: QEventDispatcherPlatform(_POINTER_) awake ()
# inform: Signal: SignalSlotClass(_POINTER_) signalWithParameters (int(242), char(m))
# inform: Slot: SignalSlotClass(_POINTER_) slotWithoutParameters()
# inform: Slot: SignalSlotClass(_POINTER_) slotWithoutParameters()
# inform: Signal: QEventDispatcherPlatform(_POINTER_) awake ()
...
ok 10 - twoSlotsOldSyntax(queued)
# Signal: SignalSlotClass(_POINTER_) signalWithoutParameters ()
# Signal: SignalSlotClass(_POINTER_) nestedSignal ()
# Signal: QEventDispatcherPlatform(_POINTER_) awake ()
# Signal: SignalSlotClass(_POINTER_) signalWithParameters (int(242), char(m))
# Signal: SignalSlotClass(_POINTER_) nestedSignalWithParameters (int(242), char(m))
# Signal: QEventDispatcherPlatform(_POINTER_) awake ()
# Signal: SignalSlotClass(_POINTER_) signalWithParameters (int(242), char(m))
# Signal: SignalSlotClass(_POINTER_) nestedSignal ()
# Signal: QEventDispatcherPlatform(_POINTER_) awake ()
---
# inform: Signal: SignalSlotClass(_POINTER_) signalWithoutParameters ()
# inform: Signal: QEventDispatcherPlatform(_POINTER_) awake ()
# inform: Signal: SignalSlotClass(_POINTER_) signalWithParameters (int(242), char(m))
# inform: Signal: QEventDispatcherPlatform(_POINTER_) awake ()
# inform: Signal: SignalSlotClass(_POINTER_) signalWithParameters (int(242), char(m))
# inform: Signal: QEventDispatcherPlatform(_POINTER_) awake ()
...
ok 11 - signalForwarding(direct)
# Signal: SignalSlotClass(_POINTER_) signalWithoutParameters ()
# Signal: QEventDispatcherPlatform(_POINTER_) awake ()
# Signal: SignalSlotClass(_POINTER_) nestedSignal ()
# Signal: SignalSlotClass(_POINTER_) signalWithParameters (int(242), char(m))
# Signal: QEventDispatcherPlatform(_POINTER_) awake ()
# Signal: SignalSlotClass(_POINTER_) nestedSignalWithParameters (int(242), char(m))
# Signal: SignalSlotClass(_POINTER_) signalWithParameters (int(242), char(m))
# Signal: QEventDispatcherPlatform(_POINTER_) awake ()
# Signal: SignalSlotClass(_POINTER_) nestedSignal ()
---
# inform: Signal: SignalSlotClass(_POINTER_) signalWithoutParameters ()
# inform: Signal: SignalSlotClass(_POINTER_) nestedSignal ()
# inform: Signal: QEventDispatcherPlatform(_POINTER_) awake ()
# inform: Signal: SignalSlotClass(_POINTER_) signalWithParameters (int(242), char(m))
# inform: Signal: SignalSlotClass(_POINTER_) nestedSignalWithParameters (int(242), char(m))
# inform: Signal: QEventDispatcherPlatform(_POINTER_) awake ()
# inform: Signal: SignalSlotClass(_POINTER_) signalWithParameters (int(242), char(m))
# inform: Signal: SignalSlotClass(_POINTER_) nestedSignal ()
# inform: Signal: QEventDispatcherPlatform(_POINTER_) awake ()
...
ok 12 - signalForwarding(queued)
# Signal: SignalSlotClass(_POINTER_) signalWithoutParameters ()
# Slot: SignalSlotClass(_POINTER_) nestedSignal()
# Signal: SignalSlotClass(_POINTER_) nestedSignal ()
# Signal: QEventDispatcherPlatform(_POINTER_) awake ()
# Signal: SignalSlotClass(_POINTER_) signalWithParameters (int(242), char(m))
# Slot: SignalSlotClass(_POINTER_) nestedSignalWithParameters(int,char)
# Signal: SignalSlotClass(_POINTER_) nestedSignalWithParameters (int(242), char(m))
# Signal: QEventDispatcherPlatform(_POINTER_) awake ()
# Signal: SignalSlotClass(_POINTER_) signalWithParameters (int(242), char(m))
# Slot: SignalSlotClass(_POINTER_) nestedSignal()
# Signal: SignalSlotClass(_POINTER_) nestedSignal ()
# Signal: QEventDispatcherPlatform(_POINTER_) awake ()
---
# inform: Signal: SignalSlotClass(_POINTER_) signalWithoutParameters ()
# inform: Signal: QEventDispatcherPlatform(_POINTER_) awake ()
# inform: Signal: SignalSlotClass(_POINTER_) nestedSignal ()
# inform: Signal: SignalSlotClass(_POINTER_) signalWithParameters (int(242), char(m))
# inform: Signal: QEventDispatcherPlatform(_POINTER_) awake ()
# inform: Signal: SignalSlotClass(_POINTER_) nestedSignalWithParameters (int(242), char(m))
# inform: Signal: SignalSlotClass(_POINTER_) signalWithParameters (int(242), char(m))
# inform: Signal: QEventDispatcherPlatform(_POINTER_) awake ()
# inform: Signal: SignalSlotClass(_POINTER_) nestedSignal ()
...
ok 13 - signalForwardingOldSyntax(direct)
# Signal: SignalSlotClass(_POINTER_) signalWithoutParameters ()
# Signal: QEventDispatcherPlatform(_POINTER_) awake ()
# Signal: SignalSlotClass(_POINTER_) nestedSignal ()
# Signal: SignalSlotClass(_POINTER_) signalWithParameters (int(242), char(m))
# Signal: QEventDispatcherPlatform(_POINTER_) awake ()
# Signal: SignalSlotClass(_POINTER_) nestedSignalWithParameters (int(242), char(m))
# Signal: SignalSlotClass(_POINTER_) signalWithParameters (int(242), char(m))
# Signal: QEventDispatcherPlatform(_POINTER_) awake ()
# Signal: SignalSlotClass(_POINTER_) nestedSignal ()
---
# inform: Signal: SignalSlotClass(_POINTER_) signalWithoutParameters ()
# inform: Slot: SignalSlotClass(_POINTER_) nestedSignal()
# inform: Signal: SignalSlotClass(_POINTER_) nestedSignal ()
# inform: Signal: QEventDispatcherPlatform(_POINTER_) awake ()
# inform: Signal: SignalSlotClass(_POINTER_) signalWithParameters (int(242), char(m))
# inform: Slot: SignalSlotClass(_POINTER_) nestedSignalWithParameters(int,char)
# inform: Signal: SignalSlotClass(_POINTER_) nestedSignalWithParameters (int(242), char(m))
# inform: Signal: QEventDispatcherPlatform(_POINTER_) awake ()
# inform: Signal: SignalSlotClass(_POINTER_) signalWithParameters (int(242), char(m))
# inform: Slot: SignalSlotClass(_POINTER_) nestedSignal()
# inform: Signal: SignalSlotClass(_POINTER_) nestedSignal ()
# inform: Signal: QEventDispatcherPlatform(_POINTER_) awake ()
...
ok 14 - signalForwardingOldSyntax(queued)
# Signal: SignalSlotClass(_POINTER_) signalWithoutParameters ()
# Signal: SignalSlotClass(_POINTER_) nestedSignal ()
# Signal: QEventDispatcherPlatform(_POINTER_) awake ()
---
# inform: Signal: SignalSlotClass(_POINTER_) signalWithoutParameters ()
# inform: Signal: QEventDispatcherPlatform(_POINTER_) awake ()
# inform: Signal: SignalSlotClass(_POINTER_) nestedSignal ()
# inform: Signal: SignalSlotClass(_POINTER_) signalWithParameters (int(242), char(m))
# inform: Signal: QEventDispatcherPlatform(_POINTER_) awake ()
# inform: Signal: SignalSlotClass(_POINTER_) nestedSignalWithParameters (int(242), char(m))
# inform: Signal: SignalSlotClass(_POINTER_) signalWithParameters (int(242), char(m))
# inform: Signal: QEventDispatcherPlatform(_POINTER_) awake ()
# inform: Signal: SignalSlotClass(_POINTER_) nestedSignal ()
...
ok 15 - slotEmittingSignal(direct)
# Signal: SignalSlotClass(_POINTER_) signalWithoutParameters ()
# Signal: QEventDispatcherPlatform(_POINTER_) awake ()
# Signal: SignalSlotClass(_POINTER_) nestedSignal ()
---
# inform: Signal: SignalSlotClass(_POINTER_) signalWithoutParameters ()
# inform: Signal: SignalSlotClass(_POINTER_) nestedSignal ()
# inform: Signal: QEventDispatcherPlatform(_POINTER_) awake ()
...
ok 16 - slotEmittingSignal(queued)
# Signal: SignalSlotClass(_POINTER_) signalWithoutParameters ()
# Slot: SignalSlotClass(_POINTER_) emitSecondSignal()
# Signal: SignalSlotClass(_POINTER_) nestedSignal ()
# Signal: QEventDispatcherPlatform(_POINTER_) awake ()
---
# inform: Signal: SignalSlotClass(_POINTER_) signalWithoutParameters ()
# inform: Signal: QEventDispatcherPlatform(_POINTER_) awake ()
# inform: Signal: SignalSlotClass(_POINTER_) nestedSignal ()
...
ok 17 - slotEmittingSignalOldSyntax(direct)
# Signal: SignalSlotClass(_POINTER_) signalWithoutParameters ()
# Signal: QEventDispatcherPlatform(_POINTER_) awake ()
# Signal: SignalSlotClass(_POINTER_) nestedSignal ()
---
# inform: Signal: SignalSlotClass(_POINTER_) signalWithoutParameters ()
# inform: Slot: SignalSlotClass(_POINTER_) emitSecondSignal()
# inform: Signal: SignalSlotClass(_POINTER_) nestedSignal ()
# inform: Signal: QEventDispatcherPlatform(_POINTER_) awake ()
...
ok 18 - slotEmittingSignalOldSyntax(queued)
# Signal: SignalSlotClass(_POINTER_) qStringSignal (QString(Test string))
# Signal: SignalSlotClass(_POINTER_) qStringRefSignal ((QString&)@_POINTER_)
# Signal: SignalSlotClass(_POINTER_) qStringConstRefSignal (QString(Test string))
# Signal: SignalSlotClass(_POINTER_) qByteArraySignal (QByteArray(Test bytearray))
# Signal: SignalSlotClass(_POINTER_) qListSignal (QList<int>())
# Signal: SignalSlotClass(_POINTER_) qVectorSignal (QList<int>())
# Signal: SignalSlotClass(_POINTER_) qVectorRefSignal ((QList<int>&)@_POINTER_)
# Signal: SignalSlotClass(_POINTER_) qVectorConstRefSignal (QList<int>())
# Signal: SignalSlotClass(_POINTER_) qVectorConstPointerSignal ((const QList<int>*)_POINTER_)
# Signal: SignalSlotClass(_POINTER_) qVectorPointerConstSignal ((QList<int>*)_POINTER_)
# Signal: SignalSlotClass(_POINTER_) qVariantSignal (QVariant())
# Signal: SignalSlotClass(_POINTER_) qVariantSignal (QVariant())
---
# inform: Signal: SignalSlotClass(_POINTER_) signalWithoutParameters ()
# inform: Signal: QEventDispatcherPlatform(_POINTER_) awake ()
# inform: Signal: SignalSlotClass(_POINTER_) nestedSignal ()
...
ok 19 - variousTypes()
# Signal: SignalSlotClass(_POINTER_) signalWithoutParameters ()
---
# inform: Signal: SignalSlotClass(_POINTER_) qStringSignal (QString(Test string))
# inform: Signal: SignalSlotClass(_POINTER_) qStringRefSignal ((QString&)@_POINTER_)
# inform: Signal: SignalSlotClass(_POINTER_) qStringConstRefSignal (QString(Test string))
# inform: Signal: SignalSlotClass(_POINTER_) qByteArraySignal (QByteArray(Test bytearray))
# inform: Signal: SignalSlotClass(_POINTER_) qListSignal (QList<int>())
# inform: Signal: SignalSlotClass(_POINTER_) qVectorSignal (QList<int>())
# inform: Signal: SignalSlotClass(_POINTER_) qVectorRefSignal ((QList<int>&)@_POINTER_)
# inform: Signal: SignalSlotClass(_POINTER_) qVectorConstRefSignal (QList<int>())
# inform: Signal: SignalSlotClass(_POINTER_) qVectorConstPointerSignal ((const QList<int>*)_POINTER_)
# inform: Signal: SignalSlotClass(_POINTER_) qVectorPointerConstSignal ((QList<int>*)_POINTER_)
# inform: Signal: SignalSlotClass(_POINTER_) qVariantSignal (QVariant())
# inform: Signal: SignalSlotClass(_POINTER_) qVariantSignal (QVariant())
...
ok 20 - deletingSender()
---
# inform: Signal: SignalSlotClass(_POINTER_) signalWithoutParameters ()
...
ok 21 - cleanupTestCase()
1..21
# tests 21

View File

@ -4,8 +4,13 @@ ok 1 - initTestCase()
ok 2 - test() # SKIP skipping all
ok 3 - emptytest() # SKIP skipping all
ok 4 - singleSkip(local 1) # SKIP skipping one
# this line should only be reached once (true)
ok 5 - singleSkip(local 2)
---
extensions:
messages:
- severity: debug
message: this line should only be reached once (true)
...
ok 6 - cleanupTestCase()
1..6
# tests 6

View File

@ -1,39 +1,101 @@
TAP version 13
# tst_Subtest
# initTestCase initTestCase (null)
ok 1 - initTestCase()
# init test1 (null)
# test1 test1 (null)
# cleanup test1 (null)
---
extensions:
messages:
- severity: debug
message: initTestCase initTestCase (null)
...
ok 2 - test1()
# test2_data test2 (null)
# test2_data end
# init test2 data0
# test2 test2 data0
# test2 end
# cleanup test2 data0
---
extensions:
messages:
- severity: debug
message: init test1 (null)
- severity: debug
message: test1 test1 (null)
- severity: debug
message: cleanup test1 (null)
...
ok 2 - test2() # Data prepared
---
extensions:
messages:
- severity: debug
message: test2_data test2 (null)
- severity: debug
message: test2_data end
...
ok 3 - test2(data0)
# init test2 data1
# test2 test2 data1
# test2 end
# cleanup test2 data1
---
extensions:
messages:
- severity: debug
message: init test2 data0
- severity: debug
message: test2 test2 data0
- severity: debug
message: test2 end
- severity: debug
message: cleanup test2 data0
...
ok 4 - test2(data1)
# init test2 data2
# test2 test2 data2
# test2 end
# cleanup test2 data2
---
extensions:
messages:
- severity: debug
message: init test2 data1
- severity: debug
message: test2 test2 data1
- severity: debug
message: test2 end
- severity: debug
message: cleanup test2 data1
...
ok 5 - test2(data2)
# test3_data test3 (null)
# test3_data end
# init test3 data0
# test3 test3 data0
# test3 end
# cleanup test3 data0
---
extensions:
messages:
- severity: debug
message: init test2 data2
- severity: debug
message: test2 test2 data2
- severity: debug
message: test2 end
- severity: debug
message: cleanup test2 data2
...
ok 5 - test3() # Data prepared
---
extensions:
messages:
- severity: debug
message: test3_data test3 (null)
- severity: debug
message: test3_data end
...
ok 6 - test3(data0)
# init test3 data1
# test3 test3 data1
---
extensions:
messages:
- severity: debug
message: init test3 data0
- severity: debug
message: test3 test3 data0
- severity: debug
message: test3 end
- severity: debug
message: cleanup test3 data0
...
not ok 7 - test3(data1)
---
extensions:
messages:
- severity: debug
message: init test3 data1
- severity: debug
message: test3 test3 data1
type: QCOMPARE
message: Compared values are not the same
wanted: "hello0" (QString("hello0"))
@ -44,11 +106,15 @@ not ok 7 - test3(data1)
file: qtbase/tests/auto/testlib/selftests/subtest/tst_subtest.cpp
line: 0
...
# cleanup test3 data1
# init test3 data2
# test3 test3 data2
# debug: cleanup test3 data1
not ok 8 - test3(data2)
---
extensions:
messages:
- severity: debug
message: init test3 data2
- severity: debug
message: test3 test3 data2
type: QCOMPARE
message: Compared values are not the same
wanted: "hello0" (QString("hello0"))
@ -59,10 +125,13 @@ not ok 8 - test3(data2)
file: qtbase/tests/auto/testlib/selftests/subtest/tst_subtest.cpp
line: 0
...
# cleanup test3 data2
# init multiFail (null)
# debug: cleanup test3 data2
not ok 9 - multiFail()
---
extensions:
messages:
- severity: debug
message: init multiFail (null)
# This failure message should be repeated ten times
at: tst_Subtest::multiFail() (qtbase/tests/auto/testlib/selftests/subtest/tst_subtest.cpp:0)
file: qtbase/tests/auto/testlib/selftests/subtest/tst_subtest.cpp
@ -138,9 +207,14 @@ not ok 9 - multiFail()
file: qtbase/tests/auto/testlib/selftests/subtest/tst_subtest.cpp
line: 0
...
# cleanup multiFail (null)
# init multiSkip (null)
# debug: cleanup multiFail (null)
ok 10 - multiSkip() # SKIP This skip should be repeated ten times
---
extensions:
messages:
- severity: debug
message: init multiSkip (null)
...
ok 10 - multiSkip() # SKIP This skip should be repeated ten times
ok 10 - multiSkip() # SKIP This skip should be repeated ten times
ok 10 - multiSkip() # SKIP This skip should be repeated ten times
@ -151,9 +225,14 @@ ok 10 - multiSkip() # SKIP This skip should be repeated ten times
ok 10 - multiSkip() # SKIP This skip should be repeated ten times
ok 10 - multiSkip() # SKIP This skip should be repeated ten times
ok 10 - multiSkip() # SKIP But this test should only contribute one to the skip count
# cleanup multiSkip (null)
# cleanupTestCase cleanupTestCase (null)
# debug: cleanup multiSkip (null)
ok 11 - cleanupTestCase()
---
extensions:
messages:
- severity: debug
message: cleanupTestCase cleanupTestCase (null)
...
1..11
# tests 11
# pass 7

View File

@ -95,9 +95,12 @@ not ok 21 - testFailInInit(fail)
...
ok 22 - testFailInInit(after)
ok 23 - testFailInCleanup(before)
# This test function should execute and then QFAIL in cleanup()
not ok 24 - testFailInCleanup(fail)
---
extensions:
messages:
- severity: debug
message: This test function should execute and then QFAIL in cleanup()
# Fail in cleanup()
at: tst_Counting::testFailInCleanup() (qtbase/tests/auto/testlib/selftests/counting/tst_counting.cpp:0)
file: qtbase/tests/auto/testlib/selftests/counting/tst_counting.cpp
@ -108,8 +111,13 @@ ok 26 - testSkipInInit(before)
ok 27 - testSkipInInit(skip) # SKIP Skip in init()
ok 28 - testSkipInInit(after)
ok 29 - testSkipInCleanup(before)
# This test function should execute and then QSKIP in cleanup()
ok 30 - testSkipInCleanup(skip) # SKIP Skip in cleanup()
---
extensions:
messages:
- severity: debug
message: This test function should execute and then QSKIP in cleanup()
...
ok 31 - testSkipInCleanup(after)
ok 32 - cleanupTestCase()
1..32

View File

@ -1,22 +1,30 @@
TAP version 13
# tst_Counting
ok 1 - initTestCase()
# QVERIFY(true)
# QCOMPARE(2 + 1, 3)
ok 2 - testPassPass(row 1)
# QVERIFY(true)
# QCOMPARE(2 + 1, 3)
---
# inform: QVERIFY(true)
# inform: QCOMPARE(2 + 1, 3)
...
ok 3 - testPassPass(row 2)
# QVERIFY(true)
# QCOMPARE(2 + 1, 3)
---
# inform: QVERIFY(true)
# inform: QCOMPARE(2 + 1, 3)
...
ok 4 - testPassSkip(row 1)
---
# inform: QVERIFY(true)
# inform: QCOMPARE(2 + 1, 3)
...
ok 5 - testPassSkip(row 2) # SKIP Skipping
# QVERIFY(true)
# QCOMPARE(2 + 1, 3)
ok 6 - testPassFail(row 1)
# QVERIFY(false)
---
# inform: QVERIFY(true)
# inform: QCOMPARE(2 + 1, 3)
...
not ok 7 - testPassFail(row 2)
---
# inform: QVERIFY(false)
type: QVERIFY
message: Verification failed
wanted: true (false)
@ -28,15 +36,17 @@ not ok 7 - testPassFail(row 2)
line: 0
...
ok 8 - testSkipPass(row 1) # SKIP Skipping
# QVERIFY(true)
# QCOMPARE(2 + 1, 3)
ok 9 - testSkipPass(row 2)
---
# inform: QVERIFY(true)
# inform: QCOMPARE(2 + 1, 3)
...
ok 10 - testSkipSkip(row 1) # SKIP Skipping
ok 11 - testSkipSkip(row 2) # SKIP Skipping
ok 12 - testSkipFail(row 1) # SKIP Skipping
# QVERIFY(false)
not ok 13 - testSkipFail(row 2)
---
# inform: QVERIFY(false)
type: QVERIFY
message: Verification failed
wanted: true (false)
@ -47,9 +57,9 @@ not ok 13 - testSkipFail(row 2)
file: qtbase/tests/auto/testlib/selftests/counting/tst_counting.cpp
line: 0
...
# QVERIFY(false)
not ok 14 - testFailPass(row 1)
---
# inform: QVERIFY(false)
type: QVERIFY
message: Verification failed
wanted: true (false)
@ -60,12 +70,14 @@ not ok 14 - testFailPass(row 1)
file: qtbase/tests/auto/testlib/selftests/counting/tst_counting.cpp
line: 0
...
# QVERIFY(true)
# QCOMPARE(2 + 1, 3)
ok 15 - testFailPass(row 2)
# QVERIFY(false)
---
# inform: QVERIFY(true)
# inform: QCOMPARE(2 + 1, 3)
...
not ok 16 - testFailSkip(row 1)
---
# inform: QVERIFY(false)
type: QVERIFY
message: Verification failed
wanted: true (false)
@ -77,9 +89,9 @@ not ok 16 - testFailSkip(row 1)
line: 0
...
ok 17 - testFailSkip(row 2) # SKIP Skipping
# QVERIFY(false)
not ok 18 - testFailFail(row 1)
---
# inform: QVERIFY(false)
type: QVERIFY
message: Verification failed
wanted: true (false)
@ -90,9 +102,9 @@ not ok 18 - testFailFail(row 1)
file: qtbase/tests/auto/testlib/selftests/counting/tst_counting.cpp
line: 0
...
# QVERIFY(false)
not ok 19 - testFailFail(row 2)
---
# inform: QVERIFY(false)
type: QVERIFY
message: Verification failed
wanted: true (false)
@ -113,9 +125,12 @@ not ok 21 - testFailInInit(fail)
...
ok 22 - testFailInInit(after)
ok 23 - testFailInCleanup(before)
# This test function should execute and then QFAIL in cleanup()
not ok 24 - testFailInCleanup(fail)
---
extensions:
messages:
- severity: debug
message: This test function should execute and then QFAIL in cleanup()
# Fail in cleanup()
at: tst_Counting::testFailInCleanup() (qtbase/tests/auto/testlib/selftests/counting/tst_counting.cpp:0)
file: qtbase/tests/auto/testlib/selftests/counting/tst_counting.cpp
@ -126,8 +141,13 @@ ok 26 - testSkipInInit(before)
ok 27 - testSkipInInit(skip) # SKIP Skip in init()
ok 28 - testSkipInInit(after)
ok 29 - testSkipInCleanup(before)
# This test function should execute and then QSKIP in cleanup()
ok 30 - testSkipInCleanup(skip) # SKIP Skip in cleanup()
---
extensions:
messages:
- severity: debug
message: This test function should execute and then QSKIP in cleanup()
...
ok 31 - testSkipInCleanup(after)
ok 32 - cleanupTestCase()
1..32

View File

@ -1,52 +1,69 @@
TAP version 13
# tst_Warnings
ok 1 - initTestCase()
# Warning
# Warning
# Debug
# Debug
# Info
# Info
# Baba
# Baba
# Bubublabla
# Babablabla
ok 2 - testWarnings()
# Did not receive message: "Warning0"
# Did not receive message: "Warning1"
---
extensions:
messages:
- severity: warning
message: Warning
- severity: warning
message: Warning
- severity: debug
message: Debug
- severity: debug
message: Debug
- severity: info
message: Info
- severity: info
message: Info
- severity: debug
message: Baba
- severity: debug
message: Baba
- severity: debug
message: Bubublabla
- severity: warning
message: Babablabla
...
not ok 3 - testMissingWarnings()
---
# inform: Did not receive message: "Warning0"
# inform: Did not receive message: "Warning1"
# Not all expected messages were received
...
# Did not receive any message matching: "Warning\s\d"
not ok 4 - testMissingWarningsRegularExpression()
---
# inform: Did not receive any message matching: "Warning\s\d"
# Not all expected messages were received
...
# Did not receive message: "Warning0"
# Did not receive message: "Warning1"
not ok 5 - testMissingWarningsWithData(first row)
---
# inform: Did not receive message: "Warning0"
# inform: Did not receive message: "Warning1"
# Not all expected messages were received
...
# Did not receive message: "Warning0"
# Did not receive message: "Warning1"
not ok 6 - testMissingWarningsWithData(second row)
---
# inform: Did not receive message: "Warning0"
# inform: Did not receive message: "Warning1"
# Not all expected messages were received
...
# Ran out of space!
not ok 7 - testFailOnWarnings()
---
extensions:
messages:
- severity: warning
message: Ran out of space!
# Received a warning that resulted in a failure:
Ran out of cabbage!
at: tst_Warnings::testFailOnWarnings() (qtbase/tests/auto/testlib/selftests/warnings/tst_warnings.cpp:0)
file: qtbase/tests/auto/testlib/selftests/warnings/tst_warnings.cpp
line: 0
...
# Ran out of tortillas!
# Ran out of oil!
# nope
# debug: Ran out of tortillas!
# info: Ran out of oil!
# warning: nope
not ok 7 - testFailOnWarnings()
---
# Received a warning that resulted in a failure:
@ -63,11 +80,16 @@ Running low on toothpaste!
file: qtbase/tests/auto/testlib/selftests/warnings/tst_warnings.cpp
line: 0
...
# Running low on flour!
# Running low on toothpaste!
# Running low on toothpaste!
# Ran out of muffins!
# warning: Running low on flour!
# debug: Running low on toothpaste!
# info: Running low on toothpaste!
ok 8 - testFailOnWarningsCleared()
---
extensions:
messages:
- severity: warning
message: Ran out of muffins!
...
not ok 9 - testFailOnWarningsWithData(warning1)
---
# Received a warning that resulted in a failure:
@ -76,22 +98,29 @@ warning1
file: qtbase/tests/auto/testlib/selftests/warnings/tst_warnings.cpp
line: 0
...
# warning2
# warning3
# warning1
# warning: warning2
# warning: warning3
not ok 10 - testFailOnWarningsWithData(warning2)
---
extensions:
messages:
- severity: warning
message: warning1
# Received a warning that resulted in a failure:
warning2
at: tst_Warnings::testFailOnWarningsWithData() (qtbase/tests/auto/testlib/selftests/warnings/tst_warnings.cpp:0)
file: qtbase/tests/auto/testlib/selftests/warnings/tst_warnings.cpp
line: 0
...
# warning3
# warning1
# warning2
# warning: warning3
not ok 11 - testFailOnWarningsWithData(warning3)
---
extensions:
messages:
- severity: warning
message: warning1
- severity: warning
message: warning2
# Received a warning that resulted in a failure:
warning3
at: tst_Warnings::testFailOnWarningsWithData() (qtbase/tests/auto/testlib/selftests/warnings/tst_warnings.cpp:0)

View File

@ -1,9 +1,12 @@
TAP version 13
# tst_Watchdog
ok 1 - initTestCase()
# Test function timed out
not ok 2 - delay()
---
extensions:
messages:
- severity: fatal
message: Test function timed out
# Received a fatal error.
...
1..2