Skip to content

Commit

Permalink
Do not use shared_ptrs for filters and patterns
Browse files Browse the repository at this point in the history
  • Loading branch information
horenmar committed Jan 25, 2020
1 parent df23792 commit d0257fc
Show file tree
Hide file tree
Showing 4 changed files with 15 additions and 16 deletions.
4 changes: 2 additions & 2 deletions src/catch2/catch_list.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -29,13 +29,13 @@ namespace Catch {
namespace {

void listTests(IStreamingReporter& reporter, Config const& config) {
TestSpec testSpec = config.testSpec();
auto const& testSpec = config.testSpec();
auto matchedTestCases = filterTests(getAllTestCasesSorted(config), testSpec, config);
reporter.listTests(matchedTestCases, config);
}

void listTags(IStreamingReporter& reporter, Config const& config) {
TestSpec testSpec = config.testSpec();
auto const& testSpec = config.testSpec();
std::vector<TestCaseHandle> matchedTestCases = filterTests(getAllTestCasesSorted(config), testSpec, config);

std::map<StringRef, TagInfo> tagCounts;
Expand Down
6 changes: 3 additions & 3 deletions src/catch2/catch_test_spec.h
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ namespace Catch {
struct IConfig;

class TestSpec {

class Pattern {
public:
explicit Pattern( std::string const& name );
Expand All @@ -34,7 +35,6 @@ namespace Catch {
private:
std::string const m_name;
};
using PatternPtr = std::shared_ptr<Pattern>;

class NamePattern : public Pattern {
public:
Expand All @@ -53,8 +53,8 @@ namespace Catch {
};

struct Filter {
std::vector<PatternPtr> m_required;
std::vector<PatternPtr> m_forbidden;
std::vector<std::unique_ptr<Pattern>> m_required;
std::vector<std::unique_ptr<Pattern>> m_forbidden;

bool matches( TestCaseInfo const& testCase ) const;
std::string name() const;
Expand Down
16 changes: 8 additions & 8 deletions src/catch2/catch_test_spec_parser.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -20,10 +20,10 @@ namespace Catch {
m_substring.reserve(m_arg.size());
m_patternName.reserve(m_arg.size());
m_realPatternPos = 0;

for( m_pos = 0; m_pos < m_arg.size(); ++m_pos )
//if visitChar fails
if( !visitChar( m_arg[m_pos] ) ){
if( !visitChar( m_arg[m_pos] ) ){
m_testSpec.m_invalidArgs.push_back(arg);
break;
}
Expand All @@ -32,7 +32,7 @@ namespace Catch {
}
TestSpec TestSpecParser::testSpec() {
addFilter();
return m_testSpec;
return std::move(m_testSpec);
}
bool TestSpecParser::visitChar( char c ) {
if( (m_mode != EscapedName) && (c == '\\') ) {
Expand Down Expand Up @@ -148,20 +148,20 @@ namespace Catch {

void TestSpecParser::addFilter() {
if( !m_currentFilter.m_required.empty() || !m_currentFilter.m_forbidden.empty() ) {
m_testSpec.m_filters.push_back( m_currentFilter );
m_testSpec.m_filters.push_back( std::move(m_currentFilter) );
m_currentFilter = TestSpec::Filter();
}
}

void TestSpecParser::saveLastMode() {
lastMode = m_mode;
}

void TestSpecParser::revertBackToLastMode() {
m_mode = lastMode;
}
bool TestSpecParser::separate() {

bool TestSpecParser::separate() {
if( (m_mode==QuotedName) || (m_mode==Tag) ){
//invalid argument, signal failure to previous scope.
m_mode = None;
Expand All @@ -174,7 +174,7 @@ namespace Catch {
addFilter();
return true; //success
}

TestSpec parseTestSpec( std::string const& arg ) {
return TestSpecParser( ITagAliasRegistry::get() ).parse( arg ).testSpec();
}
Expand Down
5 changes: 2 additions & 3 deletions src/catch2/catch_test_spec_parser.h
Original file line number Diff line number Diff line change
Expand Up @@ -65,11 +65,10 @@ namespace Catch {
token = token.substr( 8 );
}
if( !token.empty() ) {
TestSpec::PatternPtr pattern = std::make_shared<T>( token, m_substring );
if (m_exclusion) {
m_currentFilter.m_forbidden.push_back(pattern);
m_currentFilter.m_forbidden.emplace_back(std::make_unique<T>(token, m_substring));
} else {
m_currentFilter.m_required.push_back(pattern);
m_currentFilter.m_required.emplace_back(std::make_unique<T>(token, m_substring));
}
}
m_substring.clear();
Expand Down

0 comments on commit d0257fc

Please sign in to comment.