diff --git a/src/catch2/interfaces/catch_interfaces_reporter.cpp b/src/catch2/interfaces/catch_interfaces_reporter.cpp index c9a3616696..948869e7ae 100644 --- a/src/catch2/interfaces/catch_interfaces_reporter.cpp +++ b/src/catch2/interfaces/catch_interfaces_reporter.cpp @@ -21,6 +21,24 @@ namespace Catch { + namespace { + void listTestNamesOnly( std::vector const& tests ) { + for ( auto const& test : tests ) { + auto const& testCaseInfo = test.getTestCaseInfo(); + + if ( startsWith( testCaseInfo.name, '#' ) ) { + Catch::cout() << '"' << testCaseInfo.name << '"'; + } else { + Catch::cout() << testCaseInfo.name; + } + + Catch::cout() << '\n'; + } + Catch::cout() << std::flush; + } + } // end unnamed namespace + + ReporterConfig::ReporterConfig( IConfig const* _fullConfig ) : m_stream( &_fullConfig->stream() ), m_fullConfig( _fullConfig ) {} @@ -137,6 +155,14 @@ namespace Catch { } void IStreamingReporter::listTests(std::vector const& tests, IConfig const& config) { + // We special case this to provide the equivalent of old + // `--list-test-names-only`, which could then be used by the + // `--input-file` option. + if (config.verbosity() == Verbosity::Quiet) { + listTestNamesOnly(tests); + return; + } + if (config.hasTestFilters()) { Catch::cout() << "Matching test cases:\n"; } else { diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 3235c36b4d..13608bd77b 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -99,6 +99,15 @@ set_tests_properties(List::Tests::Output PROPERTIES PASS_REGULAR_EXPRESSION "[0-9]+ test cases" FAIL_REGULAR_EXPRESSION "Hidden Test" ) +# This should be equivalent to the old --list-test-names-only and be usable +# with --input-file. +add_test(NAME List::Tests::Quiet COMMAND $ --list-tests --verbosity quiet) +# Sadly we cannot ask for start-of-line and end-of-line in a ctest regex, +# so we fail if we see space/tab at the start... +set_tests_properties(List::Tests::Quiet PROPERTIES + PASS_REGULAR_EXPRESSION "\"#1905 -- test spec parser properly clears internal state between compound tests\"[\r\n]" + FAIL_REGULAR_EXPRESSION "[ \t]\"#1905 -- test spec parser properly clears internal state between compound tests\"" +) add_test(NAME List::Tests::ExitCode COMMAND $ --list-tests --verbosity high) add_test(NAME List::Tests::XmlOutput COMMAND $ --list-tests --verbosity high -r xml) set_tests_properties(List::Tests::XmlOutput PROPERTIES