mirror of
https://github.com/catchorg/Catch2.git
synced 2024-11-17 11:12:25 +01:00
--list-test-names-and-sources functionality
This commit is contained in:
parent
f666f5f0ae
commit
406e568d80
@ -174,6 +174,10 @@ namespace Catch {
|
||||
.bind( &ConfigData::filenamesAsTags );
|
||||
|
||||
// Less common commands which don't have a short form
|
||||
cli["--list-test-names-and-sources"]
|
||||
.describe("list all/matching test cases names along with their source files")
|
||||
.bind(&ConfigData::listTestNamesAndSources);
|
||||
|
||||
cli["--list-test-names-only"]
|
||||
.describe( "list all/matching test cases names only" )
|
||||
.bind( &ConfigData::listTestNamesOnly );
|
||||
|
@ -31,6 +31,7 @@ namespace Catch {
|
||||
: listTests( false ),
|
||||
listTags( false ),
|
||||
listReporters( false ),
|
||||
listTestNamesAndSources( false ),
|
||||
listTestNamesOnly( false ),
|
||||
showSuccessfulTests( false ),
|
||||
shouldDebugBreak( false ),
|
||||
@ -50,7 +51,8 @@ namespace Catch {
|
||||
bool listTests;
|
||||
bool listTags;
|
||||
bool listReporters;
|
||||
bool listTestNamesOnly;
|
||||
bool listTestNamesAndSources;
|
||||
bool listTestNamesOnly;
|
||||
|
||||
bool showSuccessfulTests;
|
||||
bool shouldDebugBreak;
|
||||
@ -107,6 +109,7 @@ namespace Catch {
|
||||
}
|
||||
|
||||
bool listTests() const { return m_data.listTests; }
|
||||
bool listTestNamesAndSources() const { return m_data.listTestNamesAndSources; }
|
||||
bool listTestNamesOnly() const { return m_data.listTestNamesOnly; }
|
||||
bool listTags() const { return m_data.listTags; }
|
||||
bool listReporters() const { return m_data.listReporters; }
|
||||
|
@ -57,21 +57,23 @@ namespace Catch {
|
||||
return matchedTests;
|
||||
}
|
||||
|
||||
inline std::size_t listTestsNamesOnly( Config const& config ) {
|
||||
TestSpec testSpec = config.testSpec();
|
||||
if( !config.testSpec().hasFilters() )
|
||||
testSpec = TestSpecParser( ITagAliasRegistry::get() ).parse( "*" ).testSpec();
|
||||
std::size_t matchedTests = 0;
|
||||
std::vector<TestCase> matchedTestCases = filterTests( getAllTestCasesSorted( config ), testSpec, config );
|
||||
for( std::vector<TestCase>::const_iterator it = matchedTestCases.begin(), itEnd = matchedTestCases.end();
|
||||
it != itEnd;
|
||||
++it ) {
|
||||
matchedTests++;
|
||||
TestCaseInfo const& testCaseInfo = it->getTestCaseInfo();
|
||||
Catch::cout() << testCaseInfo.name << std::endl;
|
||||
}
|
||||
return matchedTests;
|
||||
}
|
||||
inline std::size_t listTestsNames( Config const& config , const bool includeSources ) {
|
||||
TestSpec testSpec = config.testSpec();
|
||||
if( !config.testSpec().hasFilters() )
|
||||
testSpec = TestSpecParser( ITagAliasRegistry::get() ).parse( "*" ).testSpec();
|
||||
std::size_t matchedTests = 0;
|
||||
std::vector<TestCase> matchedTestCases = filterTests( getAllTestCasesSorted( config ), testSpec, config );
|
||||
for( std::vector<TestCase>::const_iterator it = matchedTestCases.begin(), itEnd = matchedTestCases.end();
|
||||
it != itEnd;
|
||||
++it ) {
|
||||
matchedTests++;
|
||||
TestCaseInfo const& testCaseInfo = it->getTestCaseInfo();
|
||||
Catch::cout() << testCaseInfo.name << std::endl;
|
||||
if( includeSources )
|
||||
Catch::cout() << testCaseInfo.lineInfo << std::endl;
|
||||
}
|
||||
return matchedTests;
|
||||
}
|
||||
|
||||
struct TagInfo {
|
||||
TagInfo() : count ( 0 ) {}
|
||||
@ -163,7 +165,9 @@ namespace Catch {
|
||||
if( config.listTests() )
|
||||
listedCount = listedCount.valueOr(0) + listTests( config );
|
||||
if( config.listTestNamesOnly() )
|
||||
listedCount = listedCount.valueOr(0) + listTestsNamesOnly( config );
|
||||
listedCount = listedCount.valueOr(0) + listTestsNames( config , false );
|
||||
if( config.listTestNamesAndSources() )
|
||||
listedCount = listedCount.valueOr(0) + listTestsNames( config , true );
|
||||
if( config.listTags() )
|
||||
listedCount = listedCount.valueOr(0) + listTags( config );
|
||||
if( config.listReporters() )
|
||||
|
Loading…
Reference in New Issue
Block a user