--list-test-names-and-sources functionality

This commit is contained in:
Cyberboss 2016-06-05 15:41:19 -04:00
parent f666f5f0ae
commit 406e568d80
3 changed files with 28 additions and 17 deletions

View File

@ -174,6 +174,10 @@ namespace Catch {
.bind( &ConfigData::filenamesAsTags ); .bind( &ConfigData::filenamesAsTags );
// Less common commands which don't have a short form // 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"] cli["--list-test-names-only"]
.describe( "list all/matching test cases names only" ) .describe( "list all/matching test cases names only" )
.bind( &ConfigData::listTestNamesOnly ); .bind( &ConfigData::listTestNamesOnly );

View File

@ -31,6 +31,7 @@ namespace Catch {
: listTests( false ), : listTests( false ),
listTags( false ), listTags( false ),
listReporters( false ), listReporters( false ),
listTestNamesAndSources( false ),
listTestNamesOnly( false ), listTestNamesOnly( false ),
showSuccessfulTests( false ), showSuccessfulTests( false ),
shouldDebugBreak( false ), shouldDebugBreak( false ),
@ -50,7 +51,8 @@ namespace Catch {
bool listTests; bool listTests;
bool listTags; bool listTags;
bool listReporters; bool listReporters;
bool listTestNamesOnly; bool listTestNamesAndSources;
bool listTestNamesOnly;
bool showSuccessfulTests; bool showSuccessfulTests;
bool shouldDebugBreak; bool shouldDebugBreak;
@ -107,6 +109,7 @@ namespace Catch {
} }
bool listTests() const { return m_data.listTests; } bool listTests() const { return m_data.listTests; }
bool listTestNamesAndSources() const { return m_data.listTestNamesAndSources; }
bool listTestNamesOnly() const { return m_data.listTestNamesOnly; } bool listTestNamesOnly() const { return m_data.listTestNamesOnly; }
bool listTags() const { return m_data.listTags; } bool listTags() const { return m_data.listTags; }
bool listReporters() const { return m_data.listReporters; } bool listReporters() const { return m_data.listReporters; }

View File

@ -57,21 +57,23 @@ namespace Catch {
return matchedTests; return matchedTests;
} }
inline std::size_t listTestsNamesOnly( Config const& config ) { inline std::size_t listTestsNames( Config const& config , const bool includeSources ) {
TestSpec testSpec = config.testSpec(); TestSpec testSpec = config.testSpec();
if( !config.testSpec().hasFilters() ) if( !config.testSpec().hasFilters() )
testSpec = TestSpecParser( ITagAliasRegistry::get() ).parse( "*" ).testSpec(); testSpec = TestSpecParser( ITagAliasRegistry::get() ).parse( "*" ).testSpec();
std::size_t matchedTests = 0; std::size_t matchedTests = 0;
std::vector<TestCase> matchedTestCases = filterTests( getAllTestCasesSorted( config ), testSpec, config ); std::vector<TestCase> matchedTestCases = filterTests( getAllTestCasesSorted( config ), testSpec, config );
for( std::vector<TestCase>::const_iterator it = matchedTestCases.begin(), itEnd = matchedTestCases.end(); for( std::vector<TestCase>::const_iterator it = matchedTestCases.begin(), itEnd = matchedTestCases.end();
it != itEnd; it != itEnd;
++it ) { ++it ) {
matchedTests++; matchedTests++;
TestCaseInfo const& testCaseInfo = it->getTestCaseInfo(); TestCaseInfo const& testCaseInfo = it->getTestCaseInfo();
Catch::cout() << testCaseInfo.name << std::endl; Catch::cout() << testCaseInfo.name << std::endl;
} if( includeSources )
return matchedTests; Catch::cout() << testCaseInfo.lineInfo << std::endl;
} }
return matchedTests;
}
struct TagInfo { struct TagInfo {
TagInfo() : count ( 0 ) {} TagInfo() : count ( 0 ) {}
@ -163,7 +165,9 @@ namespace Catch {
if( config.listTests() ) if( config.listTests() )
listedCount = listedCount.valueOr(0) + listTests( config ); listedCount = listedCount.valueOr(0) + listTests( config );
if( config.listTestNamesOnly() ) 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() ) if( config.listTags() )
listedCount = listedCount.valueOr(0) + listTags( config ); listedCount = listedCount.valueOr(0) + listTags( config );
if( config.listReporters() ) if( config.listReporters() )