From fcf0deb116125a0b314cb52f461339a3ed30ec2b Mon Sep 17 00:00:00 2001 From: Phil Nash Date: Mon, 19 May 2014 18:07:53 +0100 Subject: [PATCH] Fixed issue with wildcards at the start of a string --- include/internal/catch_test_spec.hpp | 2 +- projects/SelfTest/CmdLineTests.cpp | 26 ++++++++++++++++++++++++++ 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/include/internal/catch_test_spec.hpp b/include/internal/catch_test_spec.hpp index dde6f207..268ed808 100644 --- a/include/internal/catch_test_spec.hpp +++ b/include/internal/catch_test_spec.hpp @@ -36,7 +36,7 @@ namespace Catch { public: NamePattern( std::string const& name ) : m_name( toLower( name ) ), m_wildcard( NoWildcard ) { if( startsWith( m_name, "*" ) ) { - m_name = name.substr( 1 ); + m_name = m_name.substr( 1 ); m_wildcard = WildcardAtStart; } if( endsWith( m_name, "*" ) ) { diff --git a/projects/SelfTest/CmdLineTests.cpp b/projects/SelfTest/CmdLineTests.cpp index 36b8df94..beb831cc 100644 --- a/projects/SelfTest/CmdLineTests.cpp +++ b/projects/SelfTest/CmdLineTests.cpp @@ -92,6 +92,32 @@ TEST_CASE( "Parse test names and tags", "" ) { CHECK( spec.matches( tcD ) == true ); CHECK( parseTestSpec( "*a*" ).matches( tcA ) == true ); } + SECTION( "Redundant wildcard at the start" ) { + TestSpec spec = parseTestSpec( "*a" ); + CHECK( spec.hasFilters() == true ); + CHECK( spec.matches( tcA ) == true ); + CHECK( spec.matches( tcB ) == false ); + } + SECTION( "Redundant wildcard at the end" ) { + TestSpec spec = parseTestSpec( "a*" ); + CHECK( spec.hasFilters() == true ); + CHECK( spec.matches( tcA ) == true ); + CHECK( spec.matches( tcB ) == false ); + } + SECTION( "Redundant wildcard at both ends" ) { + TestSpec spec = parseTestSpec( "*a*" ); + CHECK( spec.hasFilters() == true ); + CHECK( spec.matches( tcA ) == true ); + CHECK( spec.matches( tcB ) == false ); + } + SECTION( "Wildcard at both ends, redundant at start" ) { + TestSpec spec = parseTestSpec( "*longer*" ); + CHECK( spec.hasFilters() == true ); + CHECK( spec.matches( tcA ) == false ); + CHECK( spec.matches( tcB ) == false ); + CHECK( spec.matches( tcC ) == true ); + CHECK( spec.matches( tcD ) == true ); + } SECTION( "Just wildcard" ) { TestSpec spec = parseTestSpec( "*" ); CHECK( spec.hasFilters() == true );