mirror of https://github.com/catchorg/Catch2.git
Moved new test spec code into appropriate header
- about to remove old test spec code and rewire throughout the codebase!
This commit is contained in:
parent
72e67693d4
commit
56b8d3a5f9
|
@ -77,6 +77,10 @@ namespace Catch {
|
||||||
FreeFunctionTestCase::~FreeFunctionTestCase() {}
|
FreeFunctionTestCase::~FreeFunctionTestCase() {}
|
||||||
IGeneratorInfo::~IGeneratorInfo() {}
|
IGeneratorInfo::~IGeneratorInfo() {}
|
||||||
IGeneratorsForTest::~IGeneratorsForTest() {}
|
IGeneratorsForTest::~IGeneratorsForTest() {}
|
||||||
|
TestSpec::Pattern::~Pattern() {}
|
||||||
|
TestSpec::NamePattern::~NamePattern() {}
|
||||||
|
TestSpec::TagPattern::~TagPattern() {}
|
||||||
|
TestSpec::ExcludedPattern::~ExcludedPattern() {}
|
||||||
|
|
||||||
Matchers::Impl::StdString::Equals::~Equals() {}
|
Matchers::Impl::StdString::Equals::~Equals() {}
|
||||||
Matchers::Impl::StdString::Contains::~Contains() {}
|
Matchers::Impl::StdString::Contains::~Contains() {}
|
||||||
|
|
|
@ -8,13 +8,107 @@
|
||||||
#ifndef TWOBLUECUBES_CATCH_TEST_SPEC_H_INCLUDED
|
#ifndef TWOBLUECUBES_CATCH_TEST_SPEC_H_INCLUDED
|
||||||
#define TWOBLUECUBES_CATCH_TEST_SPEC_H_INCLUDED
|
#define TWOBLUECUBES_CATCH_TEST_SPEC_H_INCLUDED
|
||||||
|
|
||||||
#include "catch_tags.h"
|
#include "catch_test_case_info.h"
|
||||||
|
#include "catch_tags.h" // deprecated
|
||||||
|
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
namespace Catch {
|
namespace Catch {
|
||||||
|
|
||||||
|
class TestSpec {
|
||||||
|
struct Pattern : SharedImpl<> {
|
||||||
|
virtual ~Pattern();
|
||||||
|
virtual bool matches( TestCaseInfo const& testCase ) const = 0;
|
||||||
|
};
|
||||||
|
class NamePattern : public Pattern {
|
||||||
|
enum WildcardPosition {
|
||||||
|
NoWildcard = 0,
|
||||||
|
WildcardAtStart = 1,
|
||||||
|
WildcardAtEnd = 2,
|
||||||
|
WildcardAtBothEnds = WildcardAtStart | WildcardAtEnd
|
||||||
|
};
|
||||||
|
|
||||||
|
public:
|
||||||
|
NamePattern( std::string const& name ) : m_name( toLower( name ) ), m_wildcard( NoWildcard ) {
|
||||||
|
if( startsWith( m_name, "*" ) ) {
|
||||||
|
m_name = name.substr( 1 );
|
||||||
|
m_wildcard = WildcardAtStart;
|
||||||
|
}
|
||||||
|
if( endsWith( m_name, "*" ) ) {
|
||||||
|
m_name = m_name.substr( 0, m_name.size()-1 );
|
||||||
|
m_wildcard = (WildcardPosition)( m_wildcard | WildcardAtEnd );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
virtual ~NamePattern();
|
||||||
|
virtual bool matches( TestCaseInfo const& testCase ) const {
|
||||||
|
switch( m_wildcard ) {
|
||||||
|
case NoWildcard:
|
||||||
|
return m_name == toLower( testCase.name );
|
||||||
|
case WildcardAtStart:
|
||||||
|
return endsWith( toLower( testCase.name ), m_name );
|
||||||
|
case WildcardAtEnd:
|
||||||
|
return startsWith( toLower( testCase.name ), m_name );
|
||||||
|
case WildcardAtBothEnds:
|
||||||
|
return contains( toLower( testCase.name ), m_name );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
private:
|
||||||
|
std::string m_name;
|
||||||
|
WildcardPosition m_wildcard;
|
||||||
|
};
|
||||||
|
class TagPattern : public Pattern {
|
||||||
|
public:
|
||||||
|
TagPattern( std::string const& tag ) : m_tag( toLower( tag ) ) {}
|
||||||
|
virtual ~TagPattern();
|
||||||
|
virtual bool matches( TestCaseInfo const& testCase ) const {
|
||||||
|
return testCase.tags.find( m_tag ) != testCase.tags.end();
|
||||||
|
}
|
||||||
|
private:
|
||||||
|
std::string m_tag;
|
||||||
|
};
|
||||||
|
class ExcludedPattern : public Pattern {
|
||||||
|
public:
|
||||||
|
ExcludedPattern( Ptr<Pattern> const& underlyingPattern ) : m_underlyingPattern( underlyingPattern ) {}
|
||||||
|
virtual ~ExcludedPattern();
|
||||||
|
virtual bool matches( TestCaseInfo const& testCase ) const { return !m_underlyingPattern->matches( testCase ); }
|
||||||
|
private:
|
||||||
|
Ptr<Pattern> m_underlyingPattern;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct Filter {
|
||||||
|
std::vector<Ptr<Pattern> > m_patterns;
|
||||||
|
|
||||||
|
bool matches( TestCaseInfo const& testCase ) const {
|
||||||
|
// All patterns in a filter must match for the filter to be a match
|
||||||
|
for( std::vector<Ptr<Pattern> >::const_iterator it = m_patterns.begin(), itEnd = m_patterns.end(); it != itEnd; ++it )
|
||||||
|
if( !(*it)->matches( testCase ) )
|
||||||
|
return false;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
public:
|
||||||
|
bool hasFilters() const {
|
||||||
|
return !m_filters.empty();
|
||||||
|
}
|
||||||
|
bool matches( TestCaseInfo const& testCase ) const {
|
||||||
|
// A TestSpec matches if any filter matches
|
||||||
|
for( std::vector<Filter>::const_iterator it = m_filters.begin(), itEnd = m_filters.end(); it != itEnd; ++it )
|
||||||
|
if( it->matches( testCase ) )
|
||||||
|
return true;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
std::vector<Filter> m_filters;
|
||||||
|
|
||||||
|
friend class TestSpecParser;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
// -------- deprecated -------
|
||||||
|
|
||||||
class TestCase;
|
class TestCase;
|
||||||
|
|
||||||
struct IfFilterMatches{ enum DoWhat {
|
struct IfFilterMatches{ enum DoWhat {
|
||||||
|
|
|
@ -0,0 +1,95 @@
|
||||||
|
/*
|
||||||
|
* Created by Phil on 15/5/2013.
|
||||||
|
* Copyright 2014 Two Blue Cubes Ltd. All rights reserved.
|
||||||
|
*
|
||||||
|
* Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||||
|
* file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
*/
|
||||||
|
#ifndef TWOBLUECUBES_CATCH_TEST_SPEC_PARSER_HPP_INCLUDED
|
||||||
|
#define TWOBLUECUBES_CATCH_TEST_SPEC_PARSER_HPP_INCLUDED
|
||||||
|
|
||||||
|
#include "catch_test_spec.h"
|
||||||
|
|
||||||
|
namespace Catch {
|
||||||
|
|
||||||
|
class TestSpecParser {
|
||||||
|
enum Mode{ None, Name, QuotedName, Tag };
|
||||||
|
Mode m_mode;
|
||||||
|
bool m_exclusion;
|
||||||
|
std::size_t m_start, m_pos;
|
||||||
|
std::string m_arg;
|
||||||
|
TestSpec::Filter m_currentFilter;
|
||||||
|
|
||||||
|
public:
|
||||||
|
TestSpec testSpec;
|
||||||
|
|
||||||
|
public:
|
||||||
|
TestSpecParser( std::string const& arg ) : m_mode( None ), m_exclusion( false ), m_start( std::string::npos ), m_arg( arg ) {
|
||||||
|
for( m_pos = 0; m_pos < m_arg.size(); ++m_pos )
|
||||||
|
visitChar( m_arg[m_pos] );
|
||||||
|
visitChar( ',' );
|
||||||
|
}
|
||||||
|
private:
|
||||||
|
void visitChar( char c ) {
|
||||||
|
if( m_mode == None ) {
|
||||||
|
switch( c ) {
|
||||||
|
case ' ': return;
|
||||||
|
case '~': m_exclusion = true; return;
|
||||||
|
case '[': return startNewMode( Tag, ++m_pos );
|
||||||
|
case '"': return startNewMode( QuotedName, ++m_pos );
|
||||||
|
default: startNewMode( Name, m_pos ); break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if( m_mode == Name ) {
|
||||||
|
if( c == ',' ) {
|
||||||
|
addPattern<TestSpec::NamePattern>();
|
||||||
|
addFilter();
|
||||||
|
}
|
||||||
|
else if( c == '[' ) {
|
||||||
|
if( subString() == "exclude:" )
|
||||||
|
m_exclusion = true;
|
||||||
|
else
|
||||||
|
addPattern<TestSpec::NamePattern>();
|
||||||
|
startNewMode( Tag, ++m_pos );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if( m_mode == QuotedName && c == '"' )
|
||||||
|
addPattern<TestSpec::NamePattern>();
|
||||||
|
else if( m_mode == Tag && c == ']' )
|
||||||
|
addPattern<TestSpec::TagPattern>();
|
||||||
|
}
|
||||||
|
void startNewMode( Mode mode, std::size_t start ) {
|
||||||
|
m_mode = mode;
|
||||||
|
m_start = start;
|
||||||
|
}
|
||||||
|
std::string subString() const { return m_arg.substr( m_start, m_pos - m_start ); }
|
||||||
|
template<typename T>
|
||||||
|
void addPattern() {
|
||||||
|
std::string token = subString();
|
||||||
|
if( startsWith( token, "exclude:" ) ) {
|
||||||
|
m_exclusion = true;
|
||||||
|
token = token.substr( 8 );
|
||||||
|
}
|
||||||
|
if( !token.empty() ) {
|
||||||
|
Ptr<TestSpec::Pattern> pattern = new T( token );
|
||||||
|
if( m_exclusion )
|
||||||
|
pattern = new TestSpec::ExcludedPattern( pattern );
|
||||||
|
m_currentFilter.m_patterns.push_back( pattern );
|
||||||
|
}
|
||||||
|
m_exclusion = false;
|
||||||
|
m_mode = None;
|
||||||
|
}
|
||||||
|
void addFilter() {
|
||||||
|
if( !m_currentFilter.m_patterns.empty() ) {
|
||||||
|
testSpec.m_filters.push_back( m_currentFilter );
|
||||||
|
m_currentFilter = TestSpec::Filter();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
inline TestSpec parseTestSpec( std::string const& arg ) {
|
||||||
|
return TestSpecParser( arg ).testSpec;
|
||||||
|
}
|
||||||
|
|
||||||
|
} // namespace Catch
|
||||||
|
|
||||||
|
#endif // TWOBLUECUBES_CATCH_TEST_SPEC_PARSER_HPP_INCLUDED
|
|
@ -1,191 +1,14 @@
|
||||||
/*
|
/*
|
||||||
* Copyright 2013 Two Blue Cubes Ltd
|
* Created by Phil on 13/5/2013.
|
||||||
|
* Copyright 2014 Two Blue Cubes Ltd. All rights reserved.
|
||||||
*
|
*
|
||||||
* Distributed under the Boost Software License, Version 1.0. (See accompanying
|
* Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||||
* file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
* file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "catch.hpp"
|
#include "catch.hpp"
|
||||||
#include "catch_test_case_info.h"
|
#include "catch_test_spec_parser.hpp"
|
||||||
|
|
||||||
#pragma clang diagnostic ignored "-Wpadded"
|
|
||||||
|
|
||||||
namespace Catch {
|
|
||||||
class TestSpec {
|
|
||||||
struct Pattern : SharedImpl<> {
|
|
||||||
virtual ~Pattern();
|
|
||||||
virtual bool matches( TestCaseInfo const& testCase ) const = 0;
|
|
||||||
};
|
|
||||||
class NamePattern : public Pattern {
|
|
||||||
enum WildcardPosition {
|
|
||||||
NoWildcard = 0,
|
|
||||||
WildcardAtStart = 1,
|
|
||||||
WildcardAtEnd = 2,
|
|
||||||
WildcardAtBothEnds = WildcardAtStart | WildcardAtEnd
|
|
||||||
};
|
|
||||||
|
|
||||||
public:
|
|
||||||
NamePattern( std::string const& name ) : m_name( toLower( name ) ), m_wildcard( NoWildcard ) {
|
|
||||||
if( startsWith( m_name, "*" ) ) {
|
|
||||||
m_name = name.substr( 1 );
|
|
||||||
m_wildcard = WildcardAtStart;
|
|
||||||
}
|
|
||||||
if( endsWith( m_name, "*" ) ) {
|
|
||||||
m_name = m_name.substr( 0, m_name.size()-1 );
|
|
||||||
m_wildcard = (WildcardPosition)( m_wildcard | WildcardAtEnd );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
virtual ~NamePattern();
|
|
||||||
virtual bool matches( TestCaseInfo const& testCase ) const {
|
|
||||||
switch( m_wildcard ) {
|
|
||||||
case NoWildcard:
|
|
||||||
return m_name == toLower( testCase.name );
|
|
||||||
case WildcardAtStart:
|
|
||||||
return endsWith( toLower( testCase.name ), m_name );
|
|
||||||
case WildcardAtEnd:
|
|
||||||
return startsWith( toLower( testCase.name ), m_name );
|
|
||||||
case WildcardAtBothEnds:
|
|
||||||
return contains( toLower( testCase.name ), m_name );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
private:
|
|
||||||
std::string m_name;
|
|
||||||
WildcardPosition m_wildcard;
|
|
||||||
};
|
|
||||||
class TagPattern : public Pattern {
|
|
||||||
public:
|
|
||||||
TagPattern( std::string const& tag ) : m_tag( toLower( tag ) ) {}
|
|
||||||
virtual ~TagPattern();
|
|
||||||
virtual bool matches( TestCaseInfo const& testCase ) const {
|
|
||||||
return testCase.tags.find( m_tag ) != testCase.tags.end();
|
|
||||||
}
|
|
||||||
private:
|
|
||||||
std::string m_tag;
|
|
||||||
};
|
|
||||||
class ExcludedPattern : public Pattern {
|
|
||||||
public:
|
|
||||||
ExcludedPattern( Ptr<Pattern> const& underlyingPattern ) : m_underlyingPattern( underlyingPattern ) {}
|
|
||||||
virtual ~ExcludedPattern();
|
|
||||||
virtual bool matches( TestCaseInfo const& testCase ) const { return !m_underlyingPattern->matches( testCase ); }
|
|
||||||
private:
|
|
||||||
Ptr<Pattern> m_underlyingPattern;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct Filter {
|
|
||||||
std::vector<Ptr<Pattern> > m_patterns;
|
|
||||||
|
|
||||||
bool matches( TestCaseInfo const& testCase ) const {
|
|
||||||
// All patterns in a filter must match for the filter to be a match
|
|
||||||
for( std::vector<Ptr<Pattern> >::const_iterator it = m_patterns.begin(), itEnd = m_patterns.end(); it != itEnd; ++it )
|
|
||||||
if( !(*it)->matches( testCase ) )
|
|
||||||
return false;
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
public:
|
|
||||||
bool hasFilters() const {
|
|
||||||
return !m_filters.empty();
|
|
||||||
}
|
|
||||||
bool matches( TestCaseInfo const& testCase ) const {
|
|
||||||
// A TestSpec matches if any filter matches
|
|
||||||
for( std::vector<Filter>::const_iterator it = m_filters.begin(), itEnd = m_filters.end(); it != itEnd; ++it )
|
|
||||||
if( it->matches( testCase ) )
|
|
||||||
return true;
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
private:
|
|
||||||
std::vector<Filter> m_filters;
|
|
||||||
|
|
||||||
friend class TestSpecParser;
|
|
||||||
};
|
|
||||||
|
|
||||||
class TestSpecParser {
|
|
||||||
enum Mode{ None, Name, QuotedName, Tag };
|
|
||||||
Mode m_mode;
|
|
||||||
bool m_exclusion;
|
|
||||||
std::size_t m_start, m_pos;
|
|
||||||
std::string m_arg;
|
|
||||||
TestSpec::Filter m_currentFilter;
|
|
||||||
|
|
||||||
public:
|
|
||||||
TestSpec testSpec;
|
|
||||||
|
|
||||||
public:
|
|
||||||
TestSpecParser( std::string const& arg ) : m_mode( None ), m_exclusion( false ), m_start( std::string::npos ), m_arg( arg ) {
|
|
||||||
for( m_pos = 0; m_pos < m_arg.size(); ++m_pos )
|
|
||||||
visitChar( m_arg[m_pos] );
|
|
||||||
visitChar( ',' );
|
|
||||||
}
|
|
||||||
private:
|
|
||||||
void visitChar( char c ) {
|
|
||||||
if( m_mode == None ) {
|
|
||||||
switch( c ) {
|
|
||||||
case ' ': return;
|
|
||||||
case '~': m_exclusion = true; return;
|
|
||||||
case '[': return startNewMode( Tag, ++m_pos );
|
|
||||||
case '"': return startNewMode( QuotedName, ++m_pos );
|
|
||||||
default: startNewMode( Name, m_pos ); break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if( m_mode == Name ) {
|
|
||||||
if( c == ',' ) {
|
|
||||||
addPattern<TestSpec::NamePattern>();
|
|
||||||
addFilter();
|
|
||||||
}
|
|
||||||
else if( c == '[' ) {
|
|
||||||
if( subString() == "exclude:" )
|
|
||||||
m_exclusion = true;
|
|
||||||
else
|
|
||||||
addPattern<TestSpec::NamePattern>();
|
|
||||||
startNewMode( Tag, ++m_pos );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if( m_mode == QuotedName && c == '"' )
|
|
||||||
addPattern<TestSpec::NamePattern>();
|
|
||||||
else if( m_mode == Tag && c == ']' )
|
|
||||||
addPattern<TestSpec::TagPattern>();
|
|
||||||
}
|
|
||||||
void startNewMode( Mode mode, std::size_t start ) {
|
|
||||||
m_mode = mode;
|
|
||||||
m_start = start;
|
|
||||||
}
|
|
||||||
std::string subString() const { return m_arg.substr( m_start, m_pos - m_start ); }
|
|
||||||
template<typename T>
|
|
||||||
void addPattern() {
|
|
||||||
std::string token = subString();
|
|
||||||
if( startsWith( token, "exclude:" ) ) {
|
|
||||||
m_exclusion = true;
|
|
||||||
token = token.substr( 8 );
|
|
||||||
}
|
|
||||||
if( !token.empty() ) {
|
|
||||||
Ptr<TestSpec::Pattern> pattern = new T( token );
|
|
||||||
if( m_exclusion )
|
|
||||||
pattern = new TestSpec::ExcludedPattern( pattern );
|
|
||||||
m_currentFilter.m_patterns.push_back( pattern );
|
|
||||||
}
|
|
||||||
m_exclusion = false;
|
|
||||||
m_mode = None;
|
|
||||||
}
|
|
||||||
void addFilter() {
|
|
||||||
if( !m_currentFilter.m_patterns.empty() ) {
|
|
||||||
testSpec.m_filters.push_back( m_currentFilter );
|
|
||||||
m_currentFilter = TestSpec::Filter();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
inline TestSpec parseTestSpec( std::string const& arg ) {
|
|
||||||
return TestSpecParser( arg ).testSpec;
|
|
||||||
}
|
|
||||||
|
|
||||||
// !TBD: move these to impl
|
|
||||||
TestSpec::Pattern::~Pattern() {}
|
|
||||||
TestSpec::NamePattern::~NamePattern() {}
|
|
||||||
TestSpec::TagPattern::~TagPattern() {}
|
|
||||||
TestSpec::ExcludedPattern::~ExcludedPattern() {}
|
|
||||||
|
|
||||||
} // namespace Catch
|
|
||||||
|
|
||||||
inline Catch::TestCase fakeTestCase( const char* name, const char* desc = "" ){ return Catch::makeTestCase( NULL, "", name, desc, CATCH_INTERNAL_LINEINFO ); }
|
inline Catch::TestCase fakeTestCase( const char* name, const char* desc = "" ){ return Catch::makeTestCase( NULL, "", name, desc, CATCH_INTERNAL_LINEINFO ); }
|
||||||
|
|
||||||
|
|
|
@ -66,6 +66,7 @@
|
||||||
262E739A1846759000CAC268 /* catch_common.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = catch_common.hpp; sourceTree = "<group>"; };
|
262E739A1846759000CAC268 /* catch_common.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = catch_common.hpp; sourceTree = "<group>"; };
|
||||||
263FD06017AF8DF200988A20 /* catch_timer.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = catch_timer.hpp; sourceTree = "<group>"; };
|
263FD06017AF8DF200988A20 /* catch_timer.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = catch_timer.hpp; sourceTree = "<group>"; };
|
||||||
263FD06117AF8DF200988A20 /* catch_timer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = catch_timer.h; sourceTree = "<group>"; };
|
263FD06117AF8DF200988A20 /* catch_timer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = catch_timer.h; sourceTree = "<group>"; };
|
||||||
|
2656C21F1925E5100040DB02 /* catch_test_spec_parser.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = catch_test_spec_parser.hpp; sourceTree = "<group>"; };
|
||||||
266B06B616F3A60A004ED264 /* VariadicMacrosTests.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = VariadicMacrosTests.cpp; path = ../../../SelfTest/VariadicMacrosTests.cpp; sourceTree = "<group>"; };
|
266B06B616F3A60A004ED264 /* VariadicMacrosTests.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = VariadicMacrosTests.cpp; path = ../../../SelfTest/VariadicMacrosTests.cpp; sourceTree = "<group>"; };
|
||||||
266ECD73170F3C620030D735 /* BDDTests.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = BDDTests.cpp; path = ../../../SelfTest/BDDTests.cpp; sourceTree = "<group>"; };
|
266ECD73170F3C620030D735 /* BDDTests.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = BDDTests.cpp; path = ../../../SelfTest/BDDTests.cpp; sourceTree = "<group>"; };
|
||||||
266ECD8C1713614B0030D735 /* catch_legacy_reporter_adapter.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = catch_legacy_reporter_adapter.hpp; sourceTree = "<group>"; };
|
266ECD8C1713614B0030D735 /* catch_legacy_reporter_adapter.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = catch_legacy_reporter_adapter.hpp; sourceTree = "<group>"; };
|
||||||
|
@ -384,6 +385,7 @@
|
||||||
4AC91CBF155C381600DC5117 /* Test execution */ = {
|
4AC91CBF155C381600DC5117 /* Test execution */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
|
2656C21F1925E5100040DB02 /* catch_test_spec_parser.hpp */,
|
||||||
4A6D0C4A149B3E3D00DB3EAA /* catch_config.hpp */,
|
4A6D0C4A149B3E3D00DB3EAA /* catch_config.hpp */,
|
||||||
4A6D0C51149B3E3D00DB3EAA /* catch_context.h */,
|
4A6D0C51149B3E3D00DB3EAA /* catch_context.h */,
|
||||||
4A6D0C61149B3E3D00DB3EAA /* catch_test_case_info.h */,
|
4A6D0C61149B3E3D00DB3EAA /* catch_test_case_info.h */,
|
||||||
|
|
Loading…
Reference in New Issue