mirror of
https://github.com/catchorg/Catch2.git
synced 2025-08-01 21:05:39 +02:00
Add --list-listeners option
This commit is contained in:
@@ -207,6 +207,18 @@ set_tests_properties(List::Reporters::XmlOutput PROPERTIES
|
||||
FAIL_REGULAR_EXPRESSION "Available reporters:"
|
||||
)
|
||||
|
||||
add_test(NAME List::Listeners::Output
|
||||
COMMAND
|
||||
$<TARGET_FILE:SelfTest> --list-listeners
|
||||
)
|
||||
set_tests_properties(List::Listeners::Output
|
||||
PROPERTIES
|
||||
PASS_REGULAR_EXPRESSION "Registered listeners:"
|
||||
)
|
||||
add_test(NAME List::Listeners::ExitCode
|
||||
COMMAND
|
||||
$<TARGET_FILE:SelfTest> --list-listeners
|
||||
)
|
||||
|
||||
|
||||
add_test(NAME NoAssertions COMMAND $<TARGET_FILE:SelfTest> -w NoAssertions "An empty test with no assertions")
|
||||
|
@@ -1898,6 +1898,10 @@ Reporters.tests.cpp:<line number>: passed: listingString, ContainsSubstring( "fa
|
||||
1 test case
|
||||
|
||||
" ( contains: "fake test name" and contains: "fakeTestTag" )
|
||||
Reporters.tests.cpp:<line number>: passed: listingString, ContainsSubstring( "fakeListener"s ) && ContainsSubstring( "fake description"s ) for: "Registered listeners:
|
||||
fakeListener: fake description
|
||||
|
||||
" ( contains: "fakeListener" and contains: "fake description" )
|
||||
Misc.tests.cpp:<line number>: passed: with 1 message: 'oops!'
|
||||
Exception.tests.cpp:<line number>: failed: unexpected exception with message: 'For some reason someone is throwing a string literal!'
|
||||
PartTracker.tests.cpp:<line number>: passed: testCase.isOpen() for: true
|
||||
|
@@ -1891,6 +1891,10 @@ Reporters.tests.cpp:<line number>: passed: listingString, ContainsSubstring( "fa
|
||||
1 test case
|
||||
|
||||
" ( contains: "fake test name" and contains: "fakeTestTag" )
|
||||
Reporters.tests.cpp:<line number>: passed: listingString, ContainsSubstring( "fakeListener"s ) && ContainsSubstring( "fake description"s ) for: "Registered listeners:
|
||||
fakeListener: fake description
|
||||
|
||||
" ( contains: "fakeListener" and contains: "fake description" )
|
||||
Misc.tests.cpp:<line number>: passed: with 1 message: 'oops!'
|
||||
Exception.tests.cpp:<line number>: failed: unexpected exception with message: 'For some reason someone is throwing a string literal!'
|
||||
PartTracker.tests.cpp:<line number>: passed: testCase.isOpen() for: true
|
||||
|
@@ -1395,5 +1395,5 @@ due to unexpected exception with message:
|
||||
|
||||
===============================================================================
|
||||
test cases: 391 | 315 passed | 69 failed | 7 failed as expected
|
||||
assertions: 2226 | 2071 passed | 128 failed | 27 failed as expected
|
||||
assertions: 2227 | 2072 passed | 128 failed | 27 failed as expected
|
||||
|
||||
|
@@ -13444,6 +13444,21 @@ with expansion:
|
||||
|
||||
" ( contains: "fake test name" and contains: "fakeTestTag" )
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
The default listing implementation write to provided stream
|
||||
Listing listeners
|
||||
-------------------------------------------------------------------------------
|
||||
Reporters.tests.cpp:<line number>
|
||||
...............................................................................
|
||||
|
||||
Reporters.tests.cpp:<line number>: PASSED:
|
||||
REQUIRE_THAT( listingString, ContainsSubstring( "fakeListener"s ) && ContainsSubstring( "fake description"s ) )
|
||||
with expansion:
|
||||
"Registered listeners:
|
||||
fakeListener: fake description
|
||||
|
||||
" ( contains: "fakeListener" and contains: "fake description" )
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
This test 'should' fail but doesn't
|
||||
-------------------------------------------------------------------------------
|
||||
@@ -17935,5 +17950,5 @@ Misc.tests.cpp:<line number>: PASSED:
|
||||
|
||||
===============================================================================
|
||||
test cases: 391 | 301 passed | 83 failed | 7 failed as expected
|
||||
assertions: 2241 | 2071 passed | 143 failed | 27 failed as expected
|
||||
assertions: 2242 | 2072 passed | 143 failed | 27 failed as expected
|
||||
|
||||
|
@@ -13437,6 +13437,21 @@ with expansion:
|
||||
|
||||
" ( contains: "fake test name" and contains: "fakeTestTag" )
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
The default listing implementation write to provided stream
|
||||
Listing listeners
|
||||
-------------------------------------------------------------------------------
|
||||
Reporters.tests.cpp:<line number>
|
||||
...............................................................................
|
||||
|
||||
Reporters.tests.cpp:<line number>: PASSED:
|
||||
REQUIRE_THAT( listingString, ContainsSubstring( "fakeListener"s ) && ContainsSubstring( "fake description"s ) )
|
||||
with expansion:
|
||||
"Registered listeners:
|
||||
fakeListener: fake description
|
||||
|
||||
" ( contains: "fakeListener" and contains: "fake description" )
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
This test 'should' fail but doesn't
|
||||
-------------------------------------------------------------------------------
|
||||
@@ -17927,5 +17942,5 @@ Misc.tests.cpp:<line number>: PASSED:
|
||||
|
||||
===============================================================================
|
||||
test cases: 391 | 301 passed | 83 failed | 7 failed as expected
|
||||
assertions: 2241 | 2071 passed | 143 failed | 27 failed as expected
|
||||
assertions: 2242 | 2072 passed | 143 failed | 27 failed as expected
|
||||
|
||||
|
@@ -1,7 +1,7 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<testsuitesloose text artifact
|
||||
>
|
||||
<testsuite name="<exe-name>" errors="17" failures="126" tests="2241" hostname="tbd" time="{duration}" timestamp="{iso8601-timestamp}">
|
||||
<testsuite name="<exe-name>" errors="17" failures="126" tests="2242" hostname="tbd" time="{duration}" timestamp="{iso8601-timestamp}">
|
||||
<properties>
|
||||
<property name="random-seed" value="1"/>
|
||||
<property name="filters" value="~[!nonportable]~[!benchmark]~[approvals] *"/>
|
||||
@@ -1379,6 +1379,7 @@ Misc.tests.cpp:<line number>
|
||||
<testcase classname="<exe-name>.global" name="The default listing implementation write to provided stream/Listing tags" time="{duration}" status="run"/>
|
||||
<testcase classname="<exe-name>.global" name="The default listing implementation write to provided stream/Listing reporters" time="{duration}" status="run"/>
|
||||
<testcase classname="<exe-name>.global" name="The default listing implementation write to provided stream/Listing tests" time="{duration}" status="run"/>
|
||||
<testcase classname="<exe-name>.global" name="The default listing implementation write to provided stream/Listing listeners" time="{duration}" status="run"/>
|
||||
<testcase classname="<exe-name>.global" name="This test 'should' fail but doesn't" time="{duration}" status="run"/>
|
||||
<testcase classname="<exe-name>.global" name="Thrown string literals are translated" time="{duration}" status="run">
|
||||
<error type="TEST_CASE">
|
||||
|
@@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<testsuites>
|
||||
<testsuite name="<exe-name>" errors="17" failures="126" tests="2241" hostname="tbd" time="{duration}" timestamp="{iso8601-timestamp}">
|
||||
<testsuite name="<exe-name>" errors="17" failures="126" tests="2242" hostname="tbd" time="{duration}" timestamp="{iso8601-timestamp}">
|
||||
<properties>
|
||||
<property name="random-seed" value="1"/>
|
||||
<property name="filters" value="~[!nonportable]~[!benchmark]~[approvals] *"/>
|
||||
@@ -1378,6 +1378,7 @@ Misc.tests.cpp:<line number>
|
||||
<testcase classname="<exe-name>.global" name="The default listing implementation write to provided stream/Listing tags" time="{duration}" status="run"/>
|
||||
<testcase classname="<exe-name>.global" name="The default listing implementation write to provided stream/Listing reporters" time="{duration}" status="run"/>
|
||||
<testcase classname="<exe-name>.global" name="The default listing implementation write to provided stream/Listing tests" time="{duration}" status="run"/>
|
||||
<testcase classname="<exe-name>.global" name="The default listing implementation write to provided stream/Listing listeners" time="{duration}" status="run"/>
|
||||
<testcase classname="<exe-name>.global" name="This test 'should' fail but doesn't" time="{duration}" status="run"/>
|
||||
<testcase classname="<exe-name>.global" name="Thrown string literals are translated" time="{duration}" status="run">
|
||||
<error type="TEST_CASE">
|
||||
|
@@ -220,6 +220,7 @@
|
||||
<testCase name="The default listing implementation write to provided stream/Listing tags" duration="{duration}"/>
|
||||
<testCase name="The default listing implementation write to provided stream/Listing reporters" duration="{duration}"/>
|
||||
<testCase name="The default listing implementation write to provided stream/Listing tests" duration="{duration}"/>
|
||||
<testCase name="The default listing implementation write to provided stream/Listing listeners" duration="{duration}"/>
|
||||
</file>
|
||||
<file path="tests/<exe-name>/IntrospectiveTests/Stream.tests.cpp">
|
||||
<testCase name="Cout stream properly declares it writes to stdout" duration="{duration}"/>
|
||||
|
@@ -219,6 +219,7 @@
|
||||
<testCase name="The default listing implementation write to provided stream/Listing tags" duration="{duration}"/>
|
||||
<testCase name="The default listing implementation write to provided stream/Listing reporters" duration="{duration}"/>
|
||||
<testCase name="The default listing implementation write to provided stream/Listing tests" duration="{duration}"/>
|
||||
<testCase name="The default listing implementation write to provided stream/Listing listeners" duration="{duration}"/>
|
||||
</file>
|
||||
<file path="tests/<exe-name>/IntrospectiveTests/Stream.tests.cpp">
|
||||
<testCase name="Cout stream properly declares it writes to stdout" duration="{duration}"/>
|
||||
|
@@ -3338,6 +3338,8 @@ ok {test-number} - listingString, ContainsSubstring("[fakeTag]"s) for: "All avai
|
||||
ok {test-number} - listingString, ContainsSubstring( "fake reporter"s ) && ContainsSubstring( "fake description"s ) for: "Available reporters: fake reporter: fake description " ( contains: "fake reporter" and contains: "fake description" )
|
||||
# The default listing implementation write to provided stream
|
||||
ok {test-number} - listingString, ContainsSubstring( "fake test name"s ) && ContainsSubstring( "fakeTestTag"s ) for: "All available test cases: fake test name [fakeTestTag] 1 test case " ( contains: "fake test name" and contains: "fakeTestTag" )
|
||||
# The default listing implementation write to provided stream
|
||||
ok {test-number} - listingString, ContainsSubstring( "fakeListener"s ) && ContainsSubstring( "fake description"s ) for: "Registered listeners: fakeListener: fake description " ( contains: "fakeListener" and contains: "fake description" )
|
||||
# This test 'should' fail but doesn't
|
||||
ok {test-number} - with 1 message: 'oops!'
|
||||
# Thrown string literals are translated
|
||||
@@ -4485,5 +4487,5 @@ ok {test-number} - q3 == 23. for: 23.0 == 23.0
|
||||
ok {test-number} -
|
||||
# xmlentitycheck
|
||||
ok {test-number} -
|
||||
1..2241
|
||||
1..2242
|
||||
|
||||
|
@@ -3331,6 +3331,8 @@ ok {test-number} - listingString, ContainsSubstring("[fakeTag]"s) for: "All avai
|
||||
ok {test-number} - listingString, ContainsSubstring( "fake reporter"s ) && ContainsSubstring( "fake description"s ) for: "Available reporters: fake reporter: fake description " ( contains: "fake reporter" and contains: "fake description" )
|
||||
# The default listing implementation write to provided stream
|
||||
ok {test-number} - listingString, ContainsSubstring( "fake test name"s ) && ContainsSubstring( "fakeTestTag"s ) for: "All available test cases: fake test name [fakeTestTag] 1 test case " ( contains: "fake test name" and contains: "fakeTestTag" )
|
||||
# The default listing implementation write to provided stream
|
||||
ok {test-number} - listingString, ContainsSubstring( "fakeListener"s ) && ContainsSubstring( "fake description"s ) for: "Registered listeners: fakeListener: fake description " ( contains: "fakeListener" and contains: "fake description" )
|
||||
# This test 'should' fail but doesn't
|
||||
ok {test-number} - with 1 message: 'oops!'
|
||||
# Thrown string literals are translated
|
||||
@@ -4477,5 +4479,5 @@ ok {test-number} - q3 == 23. for: 23.0 == 23.0
|
||||
ok {test-number} -
|
||||
# xmlentitycheck
|
||||
ok {test-number} -
|
||||
1..2241
|
||||
1..2242
|
||||
|
||||
|
@@ -15754,6 +15754,20 @@ Message from section two
|
||||
</Expression>
|
||||
<OverallResults successes="1" failures="0" expectedFailures="0"/>
|
||||
</Section>
|
||||
<Section name="Listing listeners" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
|
||||
<Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
|
||||
<Original>
|
||||
listingString, ContainsSubstring( "fakeListener"s ) && ContainsSubstring( "fake description"s )
|
||||
</Original>
|
||||
<Expanded>
|
||||
"Registered listeners:
|
||||
fakeListener: fake description
|
||||
|
||||
" ( contains: "fakeListener" and contains: "fake description" )
|
||||
</Expanded>
|
||||
</Expression>
|
||||
<OverallResults successes="1" failures="0" expectedFailures="0"/>
|
||||
</Section>
|
||||
<OverallResult success="true"/>
|
||||
</TestCase>
|
||||
<TestCase name="This test 'should' fail but doesn't" tags="[!shouldfail][.][failing]" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
|
||||
@@ -21061,6 +21075,6 @@ loose text artifact
|
||||
</Section>
|
||||
<OverallResult success="true"/>
|
||||
</TestCase>
|
||||
<OverallResults successes="2071" failures="143" expectedFailures="27"/>
|
||||
<OverallResults successes="2072" failures="143" expectedFailures="27"/>
|
||||
<OverallResultsCases successes="301" failures="83" expectedFailures="7"/>
|
||||
</Catch2TestRun>
|
||||
|
@@ -15754,6 +15754,20 @@ Message from section two
|
||||
</Expression>
|
||||
<OverallResults successes="1" failures="0" expectedFailures="0"/>
|
||||
</Section>
|
||||
<Section name="Listing listeners" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
|
||||
<Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
|
||||
<Original>
|
||||
listingString, ContainsSubstring( "fakeListener"s ) && ContainsSubstring( "fake description"s )
|
||||
</Original>
|
||||
<Expanded>
|
||||
"Registered listeners:
|
||||
fakeListener: fake description
|
||||
|
||||
" ( contains: "fakeListener" and contains: "fake description" )
|
||||
</Expanded>
|
||||
</Expression>
|
||||
<OverallResults successes="1" failures="0" expectedFailures="0"/>
|
||||
</Section>
|
||||
<OverallResult success="true"/>
|
||||
</TestCase>
|
||||
<TestCase name="This test 'should' fail but doesn't" tags="[!shouldfail][.][failing]" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
|
||||
@@ -21060,6 +21074,6 @@ There is no extra whitespace here
|
||||
</Section>
|
||||
<OverallResult success="true"/>
|
||||
</TestCase>
|
||||
<OverallResults successes="2071" failures="143" expectedFailures="27"/>
|
||||
<OverallResults successes="2072" failures="143" expectedFailures="27"/>
|
||||
<OverallResultsCases successes="301" failures="83" expectedFailures="7"/>
|
||||
</Catch2TestRun>
|
||||
|
@@ -84,6 +84,16 @@ TEST_CASE( "The default listing implementation write to provided stream",
|
||||
ContainsSubstring( "fake test name"s ) &&
|
||||
ContainsSubstring( "fakeTestTag"s ) );
|
||||
}
|
||||
SECTION( "Listing listeners" ) {
|
||||
std::vector<Catch::ListenerDescription> listeners(
|
||||
{ { "fakeListener"_catch_sr, "fake description" } } );
|
||||
|
||||
Catch::defaultListListeners( sstream.stream(), listeners );
|
||||
auto listingString = sstream.str();
|
||||
REQUIRE_THAT( listingString,
|
||||
ContainsSubstring( "fakeListener"s ) &&
|
||||
ContainsSubstring( "fake description"s ) );
|
||||
}
|
||||
}
|
||||
|
||||
TEST_CASE( "Reporter's write listings to provided stream", "[reporters]" ) {
|
||||
|
@@ -48,6 +48,10 @@ class ValidatingTestListener : public Catch::EventListenerBase {
|
||||
};
|
||||
|
||||
public:
|
||||
static std::string getDescription() {
|
||||
return "Validates ordering of Catch2's listener events";
|
||||
}
|
||||
|
||||
ValidatingTestListener(Catch::IConfig const* config) :
|
||||
EventListenerBase(config) {
|
||||
m_preferences.shouldReportAllAssertions = true;
|
||||
|
Reference in New Issue
Block a user