diff options
author | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2021-01-13 11:21:01 +0100 |
---|---|---|
committer | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2021-01-15 18:05:40 +0100 |
commit | 539553a57216c4ece292ff54fb623807c334cdb6 (patch) | |
tree | 55c4c80b5fe764717dbe32169dd1906a5cf6bcb5 /src/testlib/qtestjunitstreamer.cpp | |
parent | 7f5d41e286e043c5f3061e2eb5a0128102a38c80 (diff) |
QTestlib/JUnit XML: Log most messages to standard output instead of error output
Add an enumeration for system-out and alog element
for it. Redirect the messages types that are not warnings/errors
to this element. For compatibility, write it out only
if it is not empty. Rename enumerations and members accordingly.
[ChangeLog][QtTestLib] In JUnit XML, output that is
not a warning/error is now logged under <system-out>
instead of <system-err>.
Fixes: QTBUG-86540
Change-Id: I55598eafa7dafa486ac5a8221029c332ff47413b
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
Diffstat (limited to 'src/testlib/qtestjunitstreamer.cpp')
-rw-r--r-- | src/testlib/qtestjunitstreamer.cpp | 34 |
1 files changed, 23 insertions, 11 deletions
diff --git a/src/testlib/qtestjunitstreamer.cpp b/src/testlib/qtestjunitstreamer.cpp index 844f80f90c..28879c6e06 100644 --- a/src/testlib/qtestjunitstreamer.cpp +++ b/src/testlib/qtestjunitstreamer.cpp @@ -82,12 +82,17 @@ void QTestJUnitStreamer::formatStart(const QTestElement *element, QTestCharBuffe char indent[20]; indentForElement(element, indent, sizeof(indent)); - // Errors are written as CDATA within system-err, comments elsewhere - if (element->elementType() == QTest::LET_Error) { - if (element->parentElement()->elementType() == QTest::LET_SystemError) { + // Messages/errors are written as CDATA within system-out, system-err, + // respectively, comments elsewhere + if (element->elementType() == QTest::LET_Message) { + switch (element->parentElement()->elementType()) { + case QTest::LET_SystemOutput: + case QTest::LET_SystemError: QTest::qt_asprintf(formatted, "<![CDATA["); - } else { + break; + default: QTest::qt_asprintf(formatted, "%s<!--", indent); + break; } return; } @@ -118,9 +123,11 @@ void QTestJUnitStreamer::formatAttributes(const QTestElement* element, const QTe QTest::AttributeIndex attrindex = attribute->index(); - // For errors within system-err, we only want to output `message' - if (element && element->elementType() == QTest::LET_Error - && element->parentElement()->elementType() == QTest::LET_SystemError) { + // For messages/errors within system-out, system-err, respectively, + // we only want to output `message' + if (element && element->elementType() == QTest::LET_Message + && (element->parentElement()->elementType() == QTest::LET_SystemOutput + || element->parentElement()->elementType() == QTest::LET_SystemError)) { if (attrindex != QTest::AI_Description) return; @@ -148,12 +155,17 @@ void QTestJUnitStreamer::formatAfterAttributes(const QTestElement *element, QTes if (!element || !formatted ) return; - // Errors are written as CDATA within system-err, comments elsewhere - if (element->elementType() == QTest::LET_Error) { - if (element->parentElement()->elementType() == QTest::LET_SystemError) { + // Messages/errors are written as CDATA within system-out, system-err, + // respectively, comments elsewhere + if (element->elementType() == QTest::LET_Message) { + switch (element->parentElement()->elementType()) { + case QTest::LET_SystemOutput: + case QTest::LET_SystemError: QTest::qt_asprintf(formatted, "]]>\n"); - } else { + break; + default: QTest::qt_asprintf(formatted, " -->\n"); + break; } return; } |