qt5base-lts/tests/auto/testlib/selftests/expected_subtest.xml
Edward Welbourne 13d2e13290 Make counts of various types of test result add up correctly
Added tests for repeated skips and failures (from within void lambdas,
to simulate skips and failures from within event handlers). These
exhibit yet more ways to count more than one outcome for a test.  The
new QTest::failOnWarning() can also provoke more than one failure from
a single test, and several existing selftests exhibited various ways
for the Totals line's counts to add up to more than the number of
actual tests run.

Fixed counting so that only the first decisive incident is counted.
Tests can still report later failure or skipping, but only the first
is counted.

Added a currentTestState in qtestlog.cpp, by which it keeps track of
whether the test has resolved to a result, and clearCurrentTestState()
by which other code can reset that at the end of each test. This
brought to light various places where test-end clean-up was not being
handled - due to failure or skipping in a *_data() method or init, or
a skip in cleanup.

Fixes: QTBUG-95661
Change-Id: I5d24a37a53d3db225fa602649d8aad8f5ed6c1ad
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2022-01-13 19:47:22 +01:00

251 lines
11 KiB
XML

<?xml version="1.0" encoding="UTF-8"?>
<TestCase name="tst_Subtest">
<Environment>
<QtVersion>@INSERT_QT_VERSION_HERE@</QtVersion>
<QtBuild/>
<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" />
<Duration msecs="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" />
<Duration msecs="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>
<Duration msecs="0"/>
</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[test3 test3 data0]]></Description>
</Message>
<Message type="qdebug" file="" line="0">
<DataTag><![CDATA[data0]]></DataTag>
<Description><![CDATA[test3 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[test3 test3 data1]]></Description>
</Message>
<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/subtest/tst_subtest.cpp" line="0">
<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[test3 test3 data2]]></Description>
</Message>
<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/subtest/tst_subtest.cpp" line="0">
<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>
<Duration msecs="0"/>
</TestFunction>
<TestFunction name="multiFail">
<Message type="qdebug" file="" line="0">
<Description><![CDATA[init multiFail (null)]]></Description>
</Message>
<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/subtest/tst_subtest.cpp" line="0">
<Description><![CDATA[This failure message should be repeated ten times]]></Description>
</Incident>
<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/subtest/tst_subtest.cpp" line="0">
<Description><![CDATA[This failure message should be repeated ten times]]></Description>
</Incident>
<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/subtest/tst_subtest.cpp" line="0">
<Description><![CDATA[This failure message should be repeated ten times]]></Description>
</Incident>
<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/subtest/tst_subtest.cpp" line="0">
<Description><![CDATA[This failure message should be repeated ten times]]></Description>
</Incident>
<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/subtest/tst_subtest.cpp" line="0">
<Description><![CDATA[This failure message should be repeated ten times]]></Description>
</Incident>
<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/subtest/tst_subtest.cpp" line="0">
<Description><![CDATA[This failure message should be repeated ten times]]></Description>
</Incident>
<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/subtest/tst_subtest.cpp" line="0">
<Description><![CDATA[This failure message should be repeated ten times]]></Description>
</Incident>
<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/subtest/tst_subtest.cpp" line="0">
<Description><![CDATA[This failure message should be repeated ten times]]></Description>
</Incident>
<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/subtest/tst_subtest.cpp" line="0">
<Description><![CDATA[This failure message should be repeated ten times]]></Description>
</Incident>
<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/subtest/tst_subtest.cpp" line="0">
<Description><![CDATA[This failure message should be repeated ten times]]></Description>
</Incident>
<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/subtest/tst_subtest.cpp" line="0">
<Description><![CDATA[But this test should only contribute one to the failure count]]></Description>
</Incident>
<Message type="qdebug" file="" line="0">
<Description><![CDATA[cleanup multiFail (null)]]></Description>
</Message>
<Duration msecs="0"/>
</TestFunction>
<TestFunction name="multiSkip">
<Message type="qdebug" file="" line="0">
<Description><![CDATA[init multiSkip (null)]]></Description>
</Message>
<Incident type="skip" file="qtbase/tests/auto/testlib/selftests/subtest/tst_subtest.cpp" line="0">
<Description><![CDATA[This skip should be repeated ten times]]></Description>
</Incident>
<Incident type="skip" file="qtbase/tests/auto/testlib/selftests/subtest/tst_subtest.cpp" line="0">
<Description><![CDATA[This skip should be repeated ten times]]></Description>
</Incident>
<Incident type="skip" file="qtbase/tests/auto/testlib/selftests/subtest/tst_subtest.cpp" line="0">
<Description><![CDATA[This skip should be repeated ten times]]></Description>
</Incident>
<Incident type="skip" file="qtbase/tests/auto/testlib/selftests/subtest/tst_subtest.cpp" line="0">
<Description><![CDATA[This skip should be repeated ten times]]></Description>
</Incident>
<Incident type="skip" file="qtbase/tests/auto/testlib/selftests/subtest/tst_subtest.cpp" line="0">
<Description><![CDATA[This skip should be repeated ten times]]></Description>
</Incident>
<Incident type="skip" file="qtbase/tests/auto/testlib/selftests/subtest/tst_subtest.cpp" line="0">
<Description><![CDATA[This skip should be repeated ten times]]></Description>
</Incident>
<Incident type="skip" file="qtbase/tests/auto/testlib/selftests/subtest/tst_subtest.cpp" line="0">
<Description><![CDATA[This skip should be repeated ten times]]></Description>
</Incident>
<Incident type="skip" file="qtbase/tests/auto/testlib/selftests/subtest/tst_subtest.cpp" line="0">
<Description><![CDATA[This skip should be repeated ten times]]></Description>
</Incident>
<Incident type="skip" file="qtbase/tests/auto/testlib/selftests/subtest/tst_subtest.cpp" line="0">
<Description><![CDATA[This skip should be repeated ten times]]></Description>
</Incident>
<Incident type="skip" file="qtbase/tests/auto/testlib/selftests/subtest/tst_subtest.cpp" line="0">
<Description><![CDATA[This skip should be repeated ten times]]></Description>
</Incident>
<Incident type="skip" file="qtbase/tests/auto/testlib/selftests/subtest/tst_subtest.cpp" line="0">
<Description><![CDATA[But this test should only contribute one to the skip count]]></Description>
</Incident>
<Message type="qdebug" file="" line="0">
<Description><![CDATA[cleanup multiSkip (null)]]></Description>
</Message>
<Duration msecs="0"/>
</TestFunction>
<TestFunction name="cleanupTestCase">
<Message type="qdebug" file="" line="0">
<Description><![CDATA[cleanupTestCase cleanupTestCase (null)]]></Description>
</Message>
<Incident type="pass" file="" line="0" />
<Duration msecs="0"/>
</TestFunction>
<Duration msecs="0"/>
</TestCase>