diff --git a/src/testlib/qtestlightxmlstreamer.cpp b/src/testlib/qtestlightxmlstreamer.cpp index 892c0fd64e..4aba2a2bf8 100644 --- a/src/testlib/qtestlightxmlstreamer.cpp +++ b/src/testlib/qtestlightxmlstreamer.cpp @@ -77,9 +77,32 @@ void QTestLightXmlStreamer::formatStart(const QTestElement *element, QTestCharBu QTestCharBuffer cdataDesc; QXmlTestLogger::xmlCdata(&cdataDesc, element->attributeValue(QTest::AI_Description)); - QTest::qt_asprintf(formatted, " \n", - cdataDesc.constData()); - break; + QTestCharBuffer location; + QTestCharBuffer quotedFile; + QXmlTestLogger::xmlQuote("edFile, element->attributeValue(QTest::AI_File)); + + QTest::qt_asprintf(&location, "%s=\"%s\" %s=\"%s\"", + element->attributeName(QTest::AI_File), + quotedFile.constData(), + element->attributeName(QTest::AI_Line), + element->attributeValue(QTest::AI_Line)); + + if (element->attribute(QTest::AI_Tag)) { + QTestCharBuffer cdataTag; + QXmlTestLogger::xmlCdata(&cdataTag, element->attributeValue(QTest::AI_Tag)); + QTest::qt_asprintf(formatted, "\n" + " \n" + " \n" + "\n", element->attributeValue(QTest::AI_Result), + location.constData(), cdataTag.constData(), cdataDesc.constData()); + } + else { + QTest::qt_asprintf(formatted, "\n" + " \n" + "\n", element->attributeValue(QTest::AI_Result), + location.constData(), cdataDesc.constData()); + } + break; } case QTest::LET_Error: { // assuming type and attribute names don't need quoting @@ -88,12 +111,20 @@ void QTestLightXmlStreamer::formatStart(const QTestElement *element, QTestCharBu QXmlTestLogger::xmlQuote("edFile, element->attributeValue(QTest::AI_File)); QXmlTestLogger::xmlCdata(&cdataDesc, element->attributeValue(QTest::AI_Description)); - QTest::qt_asprintf(formatted, "\n \n\n", + QTestCharBuffer tagbuf; + if (element->attribute(QTest::AI_Tag)) { + QTestCharBuffer cdataTag; + QXmlTestLogger::xmlCdata(&cdataTag, element->attributeValue(QTest::AI_Tag)); + QTest::qt_asprintf(&tagbuf, " \n", cdataTag.constData()); + } + + QTest::qt_asprintf(formatted, "\n%s \n\n", element->attributeValue(QTest::AI_Type), element->attributeName(QTest::AI_File), quotedFile.constData(), element->attributeName(QTest::AI_Line), element->attributeValue(QTest::AI_Line), + tagbuf.constData(), cdataDesc.constData()); break; } @@ -126,10 +157,29 @@ void QTestLightXmlStreamer::formatEnd(const QTestElement *element, QTestCharBuff return; if (element->elementType() == QTest::LET_TestCase) { - if( element->attribute(QTest::AI_Result) && element->childElements()) - QTest::qt_asprintf(formatted, "\n\n"); - else + bool failed = false; + for (QTestElement* child = element->childElements(); child; child = child->nextElement()) { + if ( child->elementType() == QTest::LET_Failure + && child->attribute(QTest::AI_Result) + && ( !strcmp(child->attributeValue(QTest::AI_Result), "fail") + || !strcmp(child->attributeValue(QTest::AI_Result), "xpass")) + ) + { + failed = true; + break; + } + } + + // For passing functions, no Incident has been output yet. + // For failing functions, we already output one. + // Please note: we are outputting "pass" even if there was an xfail etc. + // This is by design (arguably bad design, but dangerous to change now!) + if (element->attribute(QTest::AI_Result) && !failed) { + QTest::qt_asprintf(formatted, "\n\n"); + } + else { QTest::qt_asprintf(formatted, "\n"); + } } else { formatted->data()[0] = '\0'; } @@ -137,29 +187,11 @@ void QTestLightXmlStreamer::formatEnd(const QTestElement *element, QTestCharBuff void QTestLightXmlStreamer::formatBeforeAttributes(const QTestElement *element, QTestCharBuffer *formatted) const { - if(!element || !formatted) + Q_UNUSED(element); + if (!formatted) return; - if (element->elementType() == QTest::LET_TestCase && element->attribute(QTest::AI_Result)) { - QTestCharBuffer buf; - QTestCharBuffer quotedFile; - QXmlTestLogger::xmlQuote("edFile, element->attributeValue(QTest::AI_File)); - - QTest::qt_asprintf(&buf, "%s=\"%s\" %s=\"%s\"", - element->attributeName(QTest::AI_File), - quotedFile.constData(), - element->attributeName(QTest::AI_Line), - element->attributeValue(QTest::AI_Line)); - - if( !element->childElements() ) - QTest::qt_asprintf(formatted, "\n", - element->attributeValue(QTest::AI_Result), buf.constData()); - else - QTest::qt_asprintf(formatted, "\n", - element->attributeValue(QTest::AI_Result), buf.constData()); - } else { - formatted->data()[0] = '\0'; - } + formatted->data()[0] = '\0'; } void QTestLightXmlStreamer::output(QTestElement *element) const diff --git a/tests/auto/selftests/expected_assert.lightxml b/tests/auto/selftests/expected_assert.lightxml index e24545f086..9062ca69a8 100644 --- a/tests/auto/selftests/expected_assert.lightxml +++ b/tests/auto/selftests/expected_assert.lightxml @@ -9,10 +9,10 @@ - + diff --git a/tests/auto/selftests/expected_badxml.lightxml b/tests/auto/selftests/expected_badxml.lightxml index 57bcf84e29..19bec33e1e 100644 --- a/tests/auto/selftests/expected_badxml.lightxml +++ b/tests/auto/selftests/expected_badxml.lightxml @@ -6,44 +6,61 @@ - + text ]]]> more text]]> + + text ]]]> more text]]> + + + + + + open < tags < text]]> + + open < tags < text]]> + + " mixed ]]]> up > " in < the ]]]> hopes < of triggering "< ]]]> bugs]]> + + " mixed ]]]> up > " in < the ]]]> hopes < of triggering "< ]]]> bugs]]> - + - + text ]]]> more text]]> + + open < tags < text]]> + " mixed ]]]> up > " in < the ]]]> hopes < of triggering "< ]]]> bugs]]> - + diff --git a/tests/auto/selftests/expected_benchlibcallgrind.lightxml b/tests/auto/selftests/expected_benchlibcallgrind.lightxml index dd5319f55e..c2394e545e 100644 --- a/tests/auto/selftests/expected_benchlibcallgrind.lightxml +++ b/tests/auto/selftests/expected_benchlibcallgrind.lightxml @@ -6,9 +6,8 @@ - - + diff --git a/tests/auto/selftests/expected_benchlibeventcounter.lightxml b/tests/auto/selftests/expected_benchlibeventcounter.lightxml index a6150a90af..3bede6de83 100644 --- a/tests/auto/selftests/expected_benchlibeventcounter.lightxml +++ b/tests/auto/selftests/expected_benchlibeventcounter.lightxml @@ -6,7 +6,6 @@ - @@ -14,7 +13,7 @@ - + diff --git a/tests/auto/selftests/expected_cmptest.lightxml b/tests/auto/selftests/expected_cmptest.lightxml index 910d81295d..72d1caf5f8 100644 --- a/tests/auto/selftests/expected_cmptest.lightxml +++ b/tests/auto/selftests/expected_cmptest.lightxml @@ -13,15 +13,25 @@ + + + + + + + + + + ) Expected (expected): QVariant(PhonyClass,)]]> diff --git a/tests/auto/selftests/expected_commandlinedata.lightxml b/tests/auto/selftests/expected_commandlinedata.lightxml index b6ca8693ae..6907b7211f 100644 --- a/tests/auto/selftests/expected_commandlinedata.lightxml +++ b/tests/auto/selftests/expected_commandlinedata.lightxml @@ -6,30 +6,34 @@ - + + + + + - + - + - + diff --git a/tests/auto/selftests/expected_datatable.lightxml b/tests/auto/selftests/expected_datatable.lightxml index 7e737620bf..e14d1e2abb 100644 --- a/tests/auto/selftests/expected_datatable.lightxml +++ b/tests/auto/selftests/expected_datatable.lightxml @@ -16,34 +16,63 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/auto/selftests/expected_datetime.lightxml b/tests/auto/selftests/expected_datetime.lightxml index abc2930f4c..49f8546e6a 100644 --- a/tests/auto/selftests/expected_datetime.lightxml +++ b/tests/auto/selftests/expected_datetime.lightxml @@ -17,6 +17,8 @@ + + diff --git a/tests/auto/selftests/expected_expectfail.lightxml b/tests/auto/selftests/expected_expectfail.lightxml index 1b77cf6230..003b8e866d 100644 --- a/tests/auto/selftests/expected_expectfail.lightxml +++ b/tests/auto/selftests/expected_expectfail.lightxml @@ -6,29 +6,34 @@ - + + - + - + + + + + diff --git a/tests/auto/selftests/expected_fetchbogus.lightxml b/tests/auto/selftests/expected_fetchbogus.lightxml index b8ecaef782..1812c0e6b5 100644 --- a/tests/auto/selftests/expected_fetchbogus.lightxml +++ b/tests/auto/selftests/expected_fetchbogus.lightxml @@ -6,10 +6,12 @@ - + + + diff --git a/tests/auto/selftests/expected_globaldata.lightxml b/tests/auto/selftests/expected_globaldata.lightxml index 7e245896f2..c4db4bc90c 100644 --- a/tests/auto/selftests/expected_globaldata.lightxml +++ b/tests/auto/selftests/expected_globaldata.lightxml @@ -10,20 +10,22 @@ + + - + - + diff --git a/tests/auto/selftests/expected_maxwarnings.lightxml b/tests/auto/selftests/expected_maxwarnings.lightxml index a5475c4b72..054108fe6d 100644 --- a/tests/auto/selftests/expected_maxwarnings.lightxml +++ b/tests/auto/selftests/expected_maxwarnings.lightxml @@ -6,7 +6,6 @@ - @@ -6013,7 +6012,7 @@ - + diff --git a/tests/auto/selftests/expected_skip.lightxml b/tests/auto/selftests/expected_skip.lightxml index 474fccc9c6..61cfe7db72 100644 --- a/tests/auto/selftests/expected_skip.lightxml +++ b/tests/auto/selftests/expected_skip.lightxml @@ -16,14 +16,15 @@ - + + - + diff --git a/tests/auto/selftests/expected_strcmp.lightxml b/tests/auto/selftests/expected_strcmp.lightxml index ede19b8171..28dc9335ec 100644 --- a/tests/auto/selftests/expected_strcmp.lightxml +++ b/tests/auto/selftests/expected_strcmp.lightxml @@ -9,10 +9,16 @@ - + + + + + + + diff --git a/tests/auto/selftests/expected_warnings.lightxml b/tests/auto/selftests/expected_warnings.lightxml index c91d9d5da6..116156ed8a 100644 --- a/tests/auto/selftests/expected_warnings.lightxml +++ b/tests/auto/selftests/expected_warnings.lightxml @@ -6,7 +6,6 @@ - @@ -25,16 +24,16 @@ - + - + diff --git a/tests/auto/selftests/expected_xunit.lightxml b/tests/auto/selftests/expected_xunit.lightxml index f276c051be..92772015c8 100644 --- a/tests/auto/selftests/expected_xunit.lightxml +++ b/tests/auto/selftests/expected_xunit.lightxml @@ -6,17 +6,16 @@ - - + - ]]> + @@ -36,11 +35,13 @@ + + diff --git a/tests/auto/selftests/tst_selftests.cpp b/tests/auto/selftests/tst_selftests.cpp index 78f0620779..320d993426 100644 --- a/tests/auto/selftests/tst_selftests.cpp +++ b/tests/auto/selftests/tst_selftests.cpp @@ -173,11 +173,12 @@ Logger::Logger(QString const& _name, QString const& _testdata_suffix, QStringLis static QList allLoggers() { return QList() - << Logger("plain", "txt", QStringList()) - << Logger("xml", "xml", QStringList() << "-xml") - << Logger("xml flush", "xml", QStringList() << "-xml" << "-flush") - << Logger("xunitxml", "xunitxml", QStringList() << "-xunitxml") - << Logger("lightxml", "lightxml", QStringList() << "-lightxml") + << Logger("plain", "txt", QStringList()) + << Logger("xml", "xml", QStringList() << "-xml") + << Logger("xml flush", "xml", QStringList() << "-xml" << "-flush") + << Logger("xunitxml", "xunitxml", QStringList() << "-xunitxml") + << Logger("lightxml", "lightxml", QStringList() << "-lightxml") + << Logger("lightxml flush", "lightxml", QStringList() << "-lightxml" << "-flush") ; } @@ -416,11 +417,12 @@ void tst_Selftests::doRunSubTest(QString const& subdir, QString const& logger, Q const QString expected(QString::fromLatin1(exp.at(i)).replace("@INSERT_QT_VERSION_HERE@", QT_VERSION_STR)); if (line.contains("ASSERT") && output != expected) { - QEXPECT_FAIL("assert", "QTestLib prints out the absolute path.", Continue); - QEXPECT_FAIL("assert xml", "QTestLib prints out the absolute path.", Continue); - QEXPECT_FAIL("assert xml flush","QTestLib prints out the absolute path.", Continue); - QEXPECT_FAIL("assert lightxml", "QTestLib prints out the absolute path.", Continue); - QEXPECT_FAIL("assert xunitxml", "QTestLib prints out the absolute path.", Continue); + QEXPECT_FAIL("assert", "QTestLib prints out the absolute path.", Continue); + QEXPECT_FAIL("assert xml", "QTestLib prints out the absolute path.", Continue); + QEXPECT_FAIL("assert xml flush", "QTestLib prints out the absolute path.", Continue); + QEXPECT_FAIL("assert lightxml", "QTestLib prints out the absolute path.", Continue); + QEXPECT_FAIL("assert lightxml flush", "QTestLib prints out the absolute path.", Continue); + QEXPECT_FAIL("assert xunitxml", "QTestLib prints out the absolute path.", Continue); } /* On some platforms we compile without RTTI, and as a result we never throw an exception. */