mirror of
				https://github.com/catchorg/Catch2.git
				synced 2025-11-03 21:49:32 +01:00 
			
		
		
		
	Change reporters to report filters in round-trippable format
This commit is contained in:
		@@ -207,7 +207,7 @@ private:
 | 
				
			|||||||
            if ( m_config->testSpec().hasFilters() ) {
 | 
					            if ( m_config->testSpec().hasFilters() ) {
 | 
				
			||||||
                m_stream << m_colour->guardColour( Colour::BrightYellow )
 | 
					                m_stream << m_colour->guardColour( Colour::BrightYellow )
 | 
				
			||||||
                         << "Filters: "
 | 
					                         << "Filters: "
 | 
				
			||||||
                         << serializeFilters( m_config->getTestsOrTags() )
 | 
					                         << m_config->testSpec()
 | 
				
			||||||
                         << '\n';
 | 
					                         << '\n';
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            m_stream << "RNG seed: " << getSeed() << '\n';
 | 
					            m_stream << "RNG seed: " << getSeed() << '\n';
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -499,7 +499,7 @@ void ConsoleReporter::testRunStarting(TestRunInfo const& _testInfo) {
 | 
				
			|||||||
    StreamingReporterBase::testRunStarting(_testInfo);
 | 
					    StreamingReporterBase::testRunStarting(_testInfo);
 | 
				
			||||||
    if ( m_config->testSpec().hasFilters() ) {
 | 
					    if ( m_config->testSpec().hasFilters() ) {
 | 
				
			||||||
        m_stream << m_colour->guardColour( Colour::BrightYellow ) << "Filters: "
 | 
					        m_stream << m_colour->guardColour( Colour::BrightYellow ) << "Filters: "
 | 
				
			||||||
                 << serializeFilters( m_config->getTestsOrTags() ) << '\n';
 | 
					                 << m_config->testSpec() << '\n';
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    m_stream << "Randomness seeded to: " << getSeed() << '\n';
 | 
					    m_stream << "Randomness seeded to: " << getSeed() << '\n';
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -13,6 +13,7 @@
 | 
				
			|||||||
#include <catch2/internal/catch_textflow.hpp>
 | 
					#include <catch2/internal/catch_textflow.hpp>
 | 
				
			||||||
#include <catch2/interfaces/catch_interfaces_config.hpp>
 | 
					#include <catch2/interfaces/catch_interfaces_config.hpp>
 | 
				
			||||||
#include <catch2/catch_test_case_info.hpp>
 | 
					#include <catch2/catch_test_case_info.hpp>
 | 
				
			||||||
 | 
					#include <catch2/catch_test_spec.hpp>
 | 
				
			||||||
#include <catch2/internal/catch_move_and_forward.hpp>
 | 
					#include <catch2/internal/catch_move_and_forward.hpp>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include <cassert>
 | 
					#include <cassert>
 | 
				
			||||||
@@ -143,10 +144,10 @@ namespace Catch {
 | 
				
			|||||||
            xml.scopedElement("property")
 | 
					            xml.scopedElement("property")
 | 
				
			||||||
                .writeAttribute("name"_sr, "random-seed"_sr)
 | 
					                .writeAttribute("name"_sr, "random-seed"_sr)
 | 
				
			||||||
                .writeAttribute("value"_sr, m_config->rngSeed());
 | 
					                .writeAttribute("value"_sr, m_config->rngSeed());
 | 
				
			||||||
            if (m_config->hasTestFilters()) {
 | 
					            if (m_config->testSpec().hasFilters()) {
 | 
				
			||||||
                xml.scopedElement("property")
 | 
					                xml.scopedElement("property")
 | 
				
			||||||
                    .writeAttribute("name"_sr, "filters"_sr)
 | 
					                    .writeAttribute("name"_sr, "filters"_sr)
 | 
				
			||||||
                    .writeAttribute("value"_sr, serializeFilters(m_config->getTestsOrTags()));
 | 
					                    .writeAttribute("value"_sr, m_config->testSpec());
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -23,7 +23,7 @@ namespace Catch {
 | 
				
			|||||||
            ReusableStringStream sstr;
 | 
					            ReusableStringStream sstr;
 | 
				
			||||||
            if ( config.testSpec().hasFilters() ) {
 | 
					            if ( config.testSpec().hasFilters() ) {
 | 
				
			||||||
                sstr << "filters='"
 | 
					                sstr << "filters='"
 | 
				
			||||||
                         << serializeFilters( config.getTestsOrTags() )
 | 
					                         << config.testSpec()
 | 
				
			||||||
                         << "' ";
 | 
					                         << "' ";
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            sstr << "rng-seed=" << config.rngSeed();
 | 
					            sstr << "rng-seed=" << config.rngSeed();
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -189,8 +189,7 @@ namespace Catch {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    void TAPReporter::testRunStarting( TestRunInfo const& ) {
 | 
					    void TAPReporter::testRunStarting( TestRunInfo const& ) {
 | 
				
			||||||
        if ( m_config->testSpec().hasFilters() ) {
 | 
					        if ( m_config->testSpec().hasFilters() ) {
 | 
				
			||||||
            m_stream << "# filters: "
 | 
					            m_stream << "# filters: " << m_config->testSpec() << '\n';
 | 
				
			||||||
                     << serializeFilters( m_config->getTestsOrTags() ) << '\n';
 | 
					 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        m_stream << "# rng-seed: " << m_config->rngSeed() << '\n';
 | 
					        m_stream << "# rng-seed: " << m_config->rngSeed() << '\n';
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -57,8 +57,9 @@ namespace Catch {
 | 
				
			|||||||
             .writeAttribute("name"_sr, m_config->name())
 | 
					             .writeAttribute("name"_sr, m_config->name())
 | 
				
			||||||
             .writeAttribute("rng-seed"_sr, m_config->rngSeed())
 | 
					             .writeAttribute("rng-seed"_sr, m_config->rngSeed())
 | 
				
			||||||
             .writeAttribute("catch2-version"_sr, libraryVersion());
 | 
					             .writeAttribute("catch2-version"_sr, libraryVersion());
 | 
				
			||||||
        if (m_config->testSpec().hasFilters())
 | 
					        if ( m_config->testSpec().hasFilters() ) {
 | 
				
			||||||
            m_xml.writeAttribute( "filters"_sr, serializeFilters( m_config->getTestsOrTags() ) );
 | 
					            m_xml.writeAttribute( "filters"_sr, m_config->testSpec() );
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    void XmlReporter::testCaseStarting( TestCaseInfo const& testInfo ) {
 | 
					    void XmlReporter::testCaseStarting( TestCaseInfo const& testInfo ) {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -611,9 +611,15 @@ foreach (reporterName # "Automake" - the simple .trs format does not support any
 | 
				
			|||||||
        $<TARGET_FILE:SelfTest> [comparisons][string-case] "CaseInsensitiveLess is case insensitive"
 | 
					        $<TARGET_FILE:SelfTest> [comparisons][string-case] "CaseInsensitiveLess is case insensitive"
 | 
				
			||||||
          --reporter ${reporterName}
 | 
					          --reporter ${reporterName}
 | 
				
			||||||
    )
 | 
					    )
 | 
				
			||||||
 | 
					    # Different regex for these two reporters, because the commas end up xml-escaped
 | 
				
			||||||
 | 
					    if (reporterName MATCHES "JUnit|XML")
 | 
				
			||||||
 | 
					      set(testCaseNameFormat ""CaseInsensitiveLess is case insensitive"")
 | 
				
			||||||
 | 
					    else()
 | 
				
			||||||
 | 
					      set(testCaseNameFormat "\"CaseInsensitiveLess is case insensitive\"")
 | 
				
			||||||
 | 
					    endif()
 | 
				
			||||||
    set_tests_properties("Reporters:Filters:${reporterName}"
 | 
					    set_tests_properties("Reporters:Filters:${reporterName}"
 | 
				
			||||||
      PROPERTIES
 | 
					      PROPERTIES
 | 
				
			||||||
        PASS_REGULAR_EXPRESSION "[fF]ilters.+\\[comparisons\\]\\[string-case\\]"
 | 
					        PASS_REGULAR_EXPRESSION "[fF]ilters.+\\[comparisons\\] \\[string-case\\] ${testCaseNameFormat}"
 | 
				
			||||||
    )
 | 
					    )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    add_test(NAME "Reporters:RngSeed:${reporterName}"
 | 
					    add_test(NAME "Reporters:RngSeed:${reporterName}"
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,4 +1,4 @@
 | 
				
			|||||||
Filters: ~[!nonportable]~[!benchmark]~[approvals] *
 | 
					Filters: "*" ~[!nonportable] ~[!benchmark] ~[approvals]
 | 
				
			||||||
RNG seed: 1
 | 
					RNG seed: 1
 | 
				
			||||||
Misc.tests.cpp:<line number>: passed: with 1 message: 'yay'
 | 
					Misc.tests.cpp:<line number>: passed: with 1 message: 'yay'
 | 
				
			||||||
Compilation.tests.cpp:<line number>: passed: y.v == 0 for: 0 == 0
 | 
					Compilation.tests.cpp:<line number>: passed: y.v == 0 for: 0 == 0
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,4 +1,4 @@
 | 
				
			|||||||
Filters: ~[!nonportable]~[!benchmark]~[approvals] *
 | 
					Filters: "*" ~[!nonportable] ~[!benchmark] ~[approvals]
 | 
				
			||||||
RNG seed: 1
 | 
					RNG seed: 1
 | 
				
			||||||
Misc.tests.cpp:<line number>: passed: with 1 message: 'yay'
 | 
					Misc.tests.cpp:<line number>: passed: with 1 message: 'yay'
 | 
				
			||||||
Compilation.tests.cpp:<line number>: passed: y.v == 0 for: 0 == 0
 | 
					Compilation.tests.cpp:<line number>: passed: y.v == 0 for: 0 == 0
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,4 +1,4 @@
 | 
				
			|||||||
Filters: ~[!nonportable]~[!benchmark]~[approvals] *
 | 
					Filters: "*" ~[!nonportable] ~[!benchmark] ~[approvals]
 | 
				
			||||||
Randomness seeded to: 1
 | 
					Randomness seeded to: 1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 | 
					~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,4 +1,4 @@
 | 
				
			|||||||
Filters: ~[!nonportable]~[!benchmark]~[approvals] *
 | 
					Filters: "*" ~[!nonportable] ~[!benchmark] ~[approvals]
 | 
				
			||||||
Randomness seeded to: 1
 | 
					Randomness seeded to: 1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 | 
					~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,4 +1,4 @@
 | 
				
			|||||||
Filters: ~[!nonportable]~[!benchmark]~[approvals] *
 | 
					Filters: "*" ~[!nonportable] ~[!benchmark] ~[approvals]
 | 
				
			||||||
Randomness seeded to: 1
 | 
					Randomness seeded to: 1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 | 
					~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,4 +1,4 @@
 | 
				
			|||||||
Filters: ~[!nonportable]~[!benchmark]~[approvals] *
 | 
					Filters: "*" ~[!nonportable] ~[!benchmark] ~[approvals]
 | 
				
			||||||
Randomness seeded to: 1
 | 
					Randomness seeded to: 1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 | 
					~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -4,7 +4,7 @@
 | 
				
			|||||||
  <testsuite name="<exe-name>" errors="17" failures="126" tests="2159" hostname="tbd" time="{duration}" timestamp="{iso8601-timestamp}">
 | 
					  <testsuite name="<exe-name>" errors="17" failures="126" tests="2159" hostname="tbd" time="{duration}" timestamp="{iso8601-timestamp}">
 | 
				
			||||||
    <properties>
 | 
					    <properties>
 | 
				
			||||||
      <property name="random-seed" value="1"/>
 | 
					      <property name="random-seed" value="1"/>
 | 
				
			||||||
      <property name="filters" value="~[!nonportable]~[!benchmark]~[approvals] *"/>
 | 
					      <property name="filters" value=""*" ~[!nonportable] ~[!benchmark] ~[approvals]"/>
 | 
				
			||||||
    </properties>
 | 
					    </properties>
 | 
				
			||||||
    <testcase classname="<exe-name>.global" name="# A test name that starts with a #" time="{duration}" status="run"/>
 | 
					    <testcase classname="<exe-name>.global" name="# A test name that starts with a #" time="{duration}" status="run"/>
 | 
				
			||||||
    <testcase classname="<exe-name>.global" name="#1027: Bitfields can be captured" time="{duration}" status="run"/>
 | 
					    <testcase classname="<exe-name>.global" name="#1027: Bitfields can be captured" time="{duration}" status="run"/>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -3,7 +3,7 @@
 | 
				
			|||||||
  <testsuite name="<exe-name>" errors="17" failures="126" tests="2159" hostname="tbd" time="{duration}" timestamp="{iso8601-timestamp}">
 | 
					  <testsuite name="<exe-name>" errors="17" failures="126" tests="2159" hostname="tbd" time="{duration}" timestamp="{iso8601-timestamp}">
 | 
				
			||||||
    <properties>
 | 
					    <properties>
 | 
				
			||||||
      <property name="random-seed" value="1"/>
 | 
					      <property name="random-seed" value="1"/>
 | 
				
			||||||
      <property name="filters" value="~[!nonportable]~[!benchmark]~[approvals] *"/>
 | 
					      <property name="filters" value=""*" ~[!nonportable] ~[!benchmark] ~[approvals]"/>
 | 
				
			||||||
    </properties>
 | 
					    </properties>
 | 
				
			||||||
    <testcase classname="<exe-name>.global" name="# A test name that starts with a #" time="{duration}" status="run"/>
 | 
					    <testcase classname="<exe-name>.global" name="# A test name that starts with a #" time="{duration}" status="run"/>
 | 
				
			||||||
    <testcase classname="<exe-name>.global" name="#1027: Bitfields can be captured" time="{duration}" status="run"/>
 | 
					    <testcase classname="<exe-name>.global" name="#1027: Bitfields can be captured" time="{duration}" status="run"/>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,5 +1,5 @@
 | 
				
			|||||||
<?xml version="1.0" encoding="UTF-8"?>
 | 
					<?xml version="1.0" encoding="UTF-8"?>
 | 
				
			||||||
<!-- filters='~[!nonportable]~[!benchmark]~[approvals] *' rng-seed=1 -->
 | 
					<!-- filters='"*" ~[!nonportable] ~[!benchmark] ~[approvals]' rng-seed=1 -->
 | 
				
			||||||
<testExecutions version="1"loose text artifact
 | 
					<testExecutions version="1"loose text artifact
 | 
				
			||||||
>
 | 
					>
 | 
				
			||||||
  <file path="tests/<exe-name>/IntrospectiveTests/Clara.tests.cpp">
 | 
					  <file path="tests/<exe-name>/IntrospectiveTests/Clara.tests.cpp">
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,5 +1,5 @@
 | 
				
			|||||||
<?xml version="1.0" encoding="UTF-8"?>
 | 
					<?xml version="1.0" encoding="UTF-8"?>
 | 
				
			||||||
<!-- filters='~[!nonportable]~[!benchmark]~[approvals] *' rng-seed=1 -->
 | 
					<!-- filters='"*" ~[!nonportable] ~[!benchmark] ~[approvals]' rng-seed=1 -->
 | 
				
			||||||
<testExecutions version="1">
 | 
					<testExecutions version="1">
 | 
				
			||||||
  <file path="tests/<exe-name>/IntrospectiveTests/Clara.tests.cpp">
 | 
					  <file path="tests/<exe-name>/IntrospectiveTests/Clara.tests.cpp">
 | 
				
			||||||
    <testCase name="Clara::Arg supports single-arg parse the way Opt does" duration="{duration}"/>
 | 
					    <testCase name="Clara::Arg supports single-arg parse the way Opt does" duration="{duration}"/>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,4 +1,4 @@
 | 
				
			|||||||
# filters: ~[!nonportable]~[!benchmark]~[approvals] *
 | 
					# filters: "*" ~[!nonportable] ~[!benchmark] ~[approvals]
 | 
				
			||||||
# rng-seed: 1
 | 
					# rng-seed: 1
 | 
				
			||||||
# # A test name that starts with a #
 | 
					# # A test name that starts with a #
 | 
				
			||||||
ok {test-number} - with 1 message: 'yay'
 | 
					ok {test-number} - with 1 message: 'yay'
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,4 +1,4 @@
 | 
				
			|||||||
# filters: ~[!nonportable]~[!benchmark]~[approvals] *
 | 
					# filters: "*" ~[!nonportable] ~[!benchmark] ~[approvals]
 | 
				
			||||||
# rng-seed: 1
 | 
					# rng-seed: 1
 | 
				
			||||||
# # A test name that starts with a #
 | 
					# # A test name that starts with a #
 | 
				
			||||||
ok {test-number} - with 1 message: 'yay'
 | 
					ok {test-number} - with 1 message: 'yay'
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,5 +1,5 @@
 | 
				
			|||||||
<?xml version="1.0" encoding="UTF-8"?>
 | 
					<?xml version="1.0" encoding="UTF-8"?>
 | 
				
			||||||
<Catch2TestRun name="<exe-name>" rng-seed="1" catch2-version="<version>" filters="~[!nonportable]~[!benchmark]~[approvals] *">
 | 
					<Catch2TestRun name="<exe-name>" rng-seed="1" catch2-version="<version>" filters=""*" ~[!nonportable] ~[!benchmark] ~[approvals]">
 | 
				
			||||||
  <TestCase name="# A test name that starts with a #" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
 | 
					  <TestCase name="# A test name that starts with a #" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
 | 
				
			||||||
    <OverallResult success="true"/>
 | 
					    <OverallResult success="true"/>
 | 
				
			||||||
  </TestCase>
 | 
					  </TestCase>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,5 +1,5 @@
 | 
				
			|||||||
<?xml version="1.0" encoding="UTF-8"?>
 | 
					<?xml version="1.0" encoding="UTF-8"?>
 | 
				
			||||||
<Catch2TestRun name="<exe-name>" rng-seed="1" catch2-version="<version>" filters="~[!nonportable]~[!benchmark]~[approvals] *">
 | 
					<Catch2TestRun name="<exe-name>" rng-seed="1" catch2-version="<version>" filters=""*" ~[!nonportable] ~[!benchmark] ~[approvals]">
 | 
				
			||||||
  <TestCase name="# A test name that starts with a #" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
 | 
					  <TestCase name="# A test name that starts with a #" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
 | 
				
			||||||
    <OverallResult success="true"/>
 | 
					    <OverallResult success="true"/>
 | 
				
			||||||
  </TestCase>
 | 
					  </TestCase>
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user