Fixed bugs in escape char handling in test names

1. If escape char is first char, sets start of range
2. Multiple escape chars are handled (offsets chars to remove)
This commit is contained in:
Phil Nash 2017-02-01 14:13:10 +00:00
parent 5121b5b058
commit b524fa7cd8

View File

@ -87,6 +87,8 @@ namespace Catch {
m_start = start; m_start = start;
} }
void escape() { void escape() {
if( m_mode == None )
m_start = m_pos;
m_mode = EscapedName; m_mode = EscapedName;
m_escapeChars.push_back( m_pos ); m_escapeChars.push_back( m_pos );
} }
@ -95,7 +97,7 @@ namespace Catch {
void addPattern() { void addPattern() {
std::string token = subString(); std::string token = subString();
for( size_t i = 0; i < m_escapeChars.size(); ++i ) for( size_t i = 0; i < m_escapeChars.size(); ++i )
token = token.substr( 0, m_escapeChars[i] ) + token.substr( m_escapeChars[i]+1 ); token = token.substr( 0, m_escapeChars[i]-i ) + token.substr( m_escapeChars[i]+1-i );
m_escapeChars.clear(); m_escapeChars.clear();
if( startsWith( token, "exclude:" ) ) { if( startsWith( token, "exclude:" ) ) {
m_exclusion = true; m_exclusion = true;