qt5base-lts/tests/auto/testlib/selftests/expected_subtest.xml
Jason McDonald 9b2971cbb4 testlib: Count passes, fails and skips consistently.
For data-driven tests, testlib previously counted one fail or skip for
each data row that failed or skipped, while it counted only one pass
for a test function where all rows passed and counted no passes for a
test function where some rows passed and some rows failed. A similar
problem also existed for benchmark tests, which could run multiple
iterations of the same test, with each fail and skip being counted but
only a single pass being counted for the entire series of iterations.

This commit makes testlib count one pass, fail or skip for each data
row.  Test functions that are not data-driven count one result for the
test function, as before.  Benchmark tests count one pass, fail or skip
per iteration.

A side-effect of this change is that the test output in plain text, xml
and light xml formats now shows a result for every data row and
benchmark iteration executed, allowing post-processors to correctly
calculate the total number of tests executed.  Previously, individual
rows were not shown in the test output if they passed, making such
calculations impossible.

The only change to the xunitxml output format is to correct a bug where
no test result was recorded for a test function if the last data row
was skipped and all other rows passed -- in which case the overall
result should be a pass.  Note that there is also a pre-existing bug
in the xunit logger, where no result is reported if all rows are
skipped; that bug is unaffected by this commit.

Task-number: QTBUG-21848
Task-number: QTBUG-22124
Change-Id: I7e17177e10d6e89e55b9684c159bd506f21d002b
Reviewed-by: Ed Baak <ed.baak@nokia.com>
2012-02-13 01:46:09 +01:00

160 lines
5.9 KiB
XML

<?xml version="1.0" encoding="ISO-8859-1"?>
<TestCase name="tst_Subtest">
<Environment>
<QtVersion>@INSERT_QT_VERSION_HERE@</QtVersion>
<QTestVersion>@INSERT_QT_VERSION_HERE@</QTestVersion>
</Environment>
<TestFunction name="initTestCase">
<Message type="qdebug" file="" line="0">
<Description><![CDATA[initTestCase initTestCase (null) ]]></Description>
</Message>
<Incident type="pass" file="" line="0" />
</TestFunction>
<TestFunction name="test1">
<Message type="qdebug" file="" line="0">
<Description><![CDATA[init test1 (null) ]]></Description>
</Message>
<Message type="qdebug" file="" line="0">
<Description><![CDATA[test1 test1 (null) ]]></Description>
</Message>
<Message type="qdebug" file="" line="0">
<Description><![CDATA[cleanup test1 (null) ]]></Description>
</Message>
<Incident type="pass" file="" line="0" />
</TestFunction>
<TestFunction name="test2">
<Message type="qdebug" file="" line="0">
<Description><![CDATA[test2_data test2 (null) ]]></Description>
</Message>
<Message type="qdebug" file="" line="0">
<Description><![CDATA[test2_data end ]]></Description>
</Message>
<Message type="qdebug" file="" line="0">
<DataTag><![CDATA[data0]]></DataTag>
<Description><![CDATA[init test2 data0 ]]></Description>
</Message>
<Message type="qdebug" file="" line="0">
<DataTag><![CDATA[data0]]></DataTag>
<Description><![CDATA[test2 test2 data0 ]]></Description>
</Message>
<Message type="qdebug" file="" line="0">
<DataTag><![CDATA[data0]]></DataTag>
<Description><![CDATA[test2 end ]]></Description>
</Message>
<Message type="qdebug" file="" line="0">
<DataTag><![CDATA[data0]]></DataTag>
<Description><![CDATA[cleanup test2 data0 ]]></Description>
</Message>
<Incident type="pass" file="" line="0">
<DataTag><![CDATA[data0]]></DataTag>
</Incident>
<Message type="qdebug" file="" line="0">
<DataTag><![CDATA[data1]]></DataTag>
<Description><![CDATA[init test2 data1 ]]></Description>
</Message>
<Message type="qdebug" file="" line="0">
<DataTag><![CDATA[data1]]></DataTag>
<Description><![CDATA[test2 test2 data1 ]]></Description>
</Message>
<Message type="qdebug" file="" line="0">
<DataTag><![CDATA[data1]]></DataTag>
<Description><![CDATA[test2 end ]]></Description>
</Message>
<Message type="qdebug" file="" line="0">
<DataTag><![CDATA[data1]]></DataTag>
<Description><![CDATA[cleanup test2 data1 ]]></Description>
</Message>
<Incident type="pass" file="" line="0">
<DataTag><![CDATA[data1]]></DataTag>
</Incident>
<Message type="qdebug" file="" line="0">
<DataTag><![CDATA[data2]]></DataTag>
<Description><![CDATA[init test2 data2 ]]></Description>
</Message>
<Message type="qdebug" file="" line="0">
<DataTag><![CDATA[data2]]></DataTag>
<Description><![CDATA[test2 test2 data2 ]]></Description>
</Message>
<Message type="qdebug" file="" line="0">
<DataTag><![CDATA[data2]]></DataTag>
<Description><![CDATA[test2 end ]]></Description>
</Message>
<Message type="qdebug" file="" line="0">
<DataTag><![CDATA[data2]]></DataTag>
<Description><![CDATA[cleanup test2 data2 ]]></Description>
</Message>
<Incident type="pass" file="" line="0">
<DataTag><![CDATA[data2]]></DataTag>
</Incident>
</TestFunction>
<TestFunction name="test3">
<Message type="qdebug" file="" line="0">
<Description><![CDATA[test3_data test3 (null) ]]></Description>
</Message>
<Message type="qdebug" file="" line="0">
<Description><![CDATA[test3_data end ]]></Description>
</Message>
<Message type="qdebug" file="" line="0">
<DataTag><![CDATA[data0]]></DataTag>
<Description><![CDATA[init test3 data0 ]]></Description>
</Message>
<Message type="qdebug" file="" line="0">
<DataTag><![CDATA[data0]]></DataTag>
<Description><![CDATA[test2 test3 data0 ]]></Description>
</Message>
<Message type="qdebug" file="" line="0">
<DataTag><![CDATA[data0]]></DataTag>
<Description><![CDATA[test2 end ]]></Description>
</Message>
<Message type="qdebug" file="" line="0">
<DataTag><![CDATA[data0]]></DataTag>
<Description><![CDATA[cleanup test3 data0 ]]></Description>
</Message>
<Incident type="pass" file="" line="0">
<DataTag><![CDATA[data0]]></DataTag>
</Incident>
<Message type="qdebug" file="" line="0">
<DataTag><![CDATA[data1]]></DataTag>
<Description><![CDATA[init test3 data1 ]]></Description>
</Message>
<Message type="qdebug" file="" line="0">
<DataTag><![CDATA[data1]]></DataTag>
<Description><![CDATA[test2 test3 data1 ]]></Description>
</Message>
<Incident type="fail" file="/home/user/dev/qt5/qtbase/tests/auto/testlib/selftests/subtest/tst_subtest.cpp" line="154">
<DataTag><![CDATA[data1]]></DataTag>
<Description><![CDATA[Compared values are not the same
Actual (str): hello1
Expected (QString("hello0")): hello0]]></Description>
</Incident>
<Message type="qdebug" file="" line="0">
<DataTag><![CDATA[data1]]></DataTag>
<Description><![CDATA[cleanup test3 data1 ]]></Description>
</Message>
<Message type="qdebug" file="" line="0">
<DataTag><![CDATA[data2]]></DataTag>
<Description><![CDATA[init test3 data2 ]]></Description>
</Message>
<Message type="qdebug" file="" line="0">
<DataTag><![CDATA[data2]]></DataTag>
<Description><![CDATA[test2 test3 data2 ]]></Description>
</Message>
<Incident type="fail" file="/home/user/dev/qt5/qtbase/tests/auto/testlib/selftests/subtest/tst_subtest.cpp" line="154">
<DataTag><![CDATA[data2]]></DataTag>
<Description><![CDATA[Compared values are not the same
Actual (str): hello2
Expected (QString("hello0")): hello0]]></Description>
</Incident>
<Message type="qdebug" file="" line="0">
<DataTag><![CDATA[data2]]></DataTag>
<Description><![CDATA[cleanup test3 data2 ]]></Description>
</Message>
</TestFunction>
<TestFunction name="cleanupTestCase">
<Message type="qdebug" file="" line="0">
<Description><![CDATA[cleanupTestCase cleanupTestCase (null) ]]></Description>
</Message>
<Incident type="pass" file="" line="0" />
</TestFunction>
</TestCase>