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. */