mirror of
				https://github.com/catchorg/Catch2.git
				synced 2025-10-31 12:17:11 +01:00 
			
		
		
		
	Merge branch 'master' into master
This commit is contained in:
		| @@ -13,7 +13,7 @@ namespace Catch { | ||||
|     using StringMatcher = Matchers::Impl::MatcherBase<std::string>; | ||||
|  | ||||
|     // This is the general overload that takes a any string matcher | ||||
|     // There is another overload, in catch_assertinhandler.h/.cpp, that only takes a string and infers | ||||
|     // There is another overload, in catch_assertionhandler.h/.cpp, that only takes a string and infers | ||||
|     // the Equals matcher (so the header does not mention matchers) | ||||
|     void handleExceptionMatchExpr( AssertionHandler& handler, StringMatcher const& matcher, StringRef matcherString  ) { | ||||
|         std::string exceptionMessage = Catch::translateActiveException(); | ||||
|   | ||||
| @@ -68,11 +68,7 @@ | ||||
| //////////////////////////////////////////////////////////////////////////////// | ||||
| // We know some environments not to support full POSIX signals | ||||
| #if defined(__CYGWIN__) || defined(__QNX__) || defined(__EMSCRIPTEN__) || defined(__DJGPP__) | ||||
|  | ||||
| #   if !defined(CATCH_CONFIG_POSIX_SIGNALS) | ||||
| #       define CATCH_INTERNAL_CONFIG_NO_POSIX_SIGNALS | ||||
| #   endif | ||||
|  | ||||
|     #define CATCH_INTERNAL_CONFIG_NO_POSIX_SIGNALS | ||||
| #endif | ||||
|  | ||||
| #ifdef __OS400__ | ||||
|   | ||||
| @@ -57,7 +57,7 @@ namespace Catch { | ||||
|         m_context(getCurrentMutableContext()), | ||||
|         m_config(_config), | ||||
|         m_reporter(std::move(reporter)), | ||||
|         m_lastAssertionInfo{ "", SourceLineInfo("",0), "", ResultDisposition::Normal }, | ||||
|         m_lastAssertionInfo{ StringRef(), SourceLineInfo("",0), StringRef(), ResultDisposition::Normal }, | ||||
|         m_includeSuccessfulResults( m_config->includeSuccessfulResults() ) | ||||
|     { | ||||
|         m_context.setRunner(this); | ||||
| @@ -84,7 +84,7 @@ namespace Catch { | ||||
|         std::string redirectedCout; | ||||
|         std::string redirectedCerr; | ||||
|  | ||||
|         TestCaseInfo testInfo = testCase.getTestCaseInfo(); | ||||
|         auto const& testInfo = testCase.getTestCaseInfo(); | ||||
|  | ||||
|         m_reporter->testCaseStarting(testInfo); | ||||
|  | ||||
| @@ -292,7 +292,7 @@ namespace Catch { | ||||
|         Counts prevAssertions = m_totals.assertions; | ||||
|         double duration = 0; | ||||
|         m_shouldReportUnexpected = true; | ||||
|         m_lastAssertionInfo = { "TEST_CASE", testCaseInfo.lineInfo, "", ResultDisposition::Normal }; | ||||
|         m_lastAssertionInfo = { "TEST_CASE"_sr, testCaseInfo.lineInfo, StringRef(), ResultDisposition::Normal }; | ||||
|  | ||||
|         seedRng(*m_config); | ||||
|  | ||||
|   | ||||
| @@ -133,7 +133,7 @@ namespace Catch { | ||||
|         if ( !exceptions.empty() ) { | ||||
|             m_startupExceptions = true; | ||||
|             Colour colourGuard( Colour::Red ); | ||||
|             Catch::cerr() << "Errors occured during startup!" << '\n'; | ||||
|             Catch::cerr() << "Errors occurred during startup!" << '\n'; | ||||
|             // iterate over all exceptions and notify user | ||||
|             for ( const auto& ex_ptr : exceptions ) { | ||||
|                 try { | ||||
| @@ -165,7 +165,7 @@ namespace Catch { | ||||
|                 << std::left << std::setw(16) << "version: " << libraryVersion() << std::endl; | ||||
|     } | ||||
|  | ||||
|     int Session::applyCommandLine( int argc, char* argv[] ) { | ||||
|     int Session::applyCommandLine( int argc, char const * const * argv ) { | ||||
|         if( m_startupExceptions ) | ||||
|             return 1; | ||||
|  | ||||
|   | ||||
| @@ -25,7 +25,7 @@ namespace Catch { | ||||
|         void showHelp() const; | ||||
|         void libIdentify(); | ||||
|  | ||||
|         int applyCommandLine( int argc, char* argv[] ); | ||||
|         int applyCommandLine( int argc, char const * const * argv ); | ||||
|  | ||||
|         void useConfigData( ConfigData const& configData ); | ||||
|  | ||||
|   | ||||
| @@ -48,8 +48,7 @@ namespace Catch { | ||||
|  | ||||
|     TestCase makeTestCase(  ITestInvoker* _testCase, | ||||
|                             std::string const& _className, | ||||
|                             std::string const& _name, | ||||
|                             std::string const& _descOrTags, | ||||
|                             NameAndTags const& nameAndTags, | ||||
|                             SourceLineInfo const& _lineInfo ) | ||||
|     { | ||||
|         bool isHidden = false; | ||||
| @@ -58,6 +57,7 @@ namespace Catch { | ||||
|         std::vector<std::string> tags; | ||||
|         std::string desc, tag; | ||||
|         bool inTag = false; | ||||
|         std::string _descOrTags = nameAndTags.tags; | ||||
|         for (char c : _descOrTags) { | ||||
|             if( !inTag ) { | ||||
|                 if( c == '[' ) | ||||
| @@ -85,8 +85,8 @@ namespace Catch { | ||||
|             tags.push_back( "." ); | ||||
|         } | ||||
|  | ||||
|         TestCaseInfo info( _name, _className, desc, tags, _lineInfo ); | ||||
|         return TestCase( _testCase, info ); | ||||
|         TestCaseInfo info( nameAndTags.name, _className, desc, tags, _lineInfo ); | ||||
|         return TestCase( _testCase, std::move(info) ); | ||||
|     } | ||||
|  | ||||
|     void setTags( TestCaseInfo& testCaseInfo, std::vector<std::string> tags ) { | ||||
| @@ -147,7 +147,7 @@ namespace Catch { | ||||
|     } | ||||
|  | ||||
|  | ||||
|     TestCase::TestCase( ITestInvoker* testCase, TestCaseInfo const& info ) : TestCaseInfo( info ), test( testCase ) {} | ||||
|     TestCase::TestCase( ITestInvoker* testCase, TestCaseInfo&& info ) : TestCaseInfo( std::move(info) ), test( testCase ) {} | ||||
|  | ||||
|  | ||||
|     TestCase TestCase::withName( std::string const& _newName ) const { | ||||
|   | ||||
| @@ -9,6 +9,7 @@ | ||||
| #define TWOBLUECUBES_CATCH_TEST_CASE_INFO_H_INCLUDED | ||||
|  | ||||
| #include "catch_common.h" | ||||
| #include "catch_test_registry.h" | ||||
|  | ||||
| #include <string> | ||||
| #include <vector> | ||||
| @@ -61,7 +62,7 @@ namespace Catch { | ||||
|     class TestCase : public TestCaseInfo { | ||||
|     public: | ||||
|  | ||||
|         TestCase( ITestInvoker* testCase, TestCaseInfo const& info ); | ||||
|         TestCase( ITestInvoker* testCase, TestCaseInfo&& info ); | ||||
|  | ||||
|         TestCase withName( std::string const& _newName ) const; | ||||
|  | ||||
| @@ -78,8 +79,7 @@ namespace Catch { | ||||
|  | ||||
|     TestCase makeTestCase(  ITestInvoker* testCase, | ||||
|                             std::string const& className, | ||||
|                             std::string const& name, | ||||
|                             std::string const& description, | ||||
|                             NameAndTags const& nameAndTags, | ||||
|                             SourceLineInfo const& lineInfo ); | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -96,7 +96,7 @@ namespace Catch { | ||||
|         m_testAsFunction(); | ||||
|     } | ||||
|  | ||||
|     std::string extractClassName( std::string const& classOrQualifiedMethodName ) { | ||||
|     std::string extractClassName( StringRef const& classOrQualifiedMethodName ) { | ||||
|         std::string className = classOrQualifiedMethodName; | ||||
|         if( startsWith( className, '&' ) ) | ||||
|         { | ||||
|   | ||||
| @@ -22,7 +22,7 @@ namespace Catch { | ||||
|     class TestCase; | ||||
|     struct IConfig; | ||||
|  | ||||
|     std::vector<TestCase> sortTests( IConfig const& config, std::vector<TestCase> const& unsortedTestCases );  | ||||
|     std::vector<TestCase> sortTests( IConfig const& config, std::vector<TestCase> const& unsortedTestCases ); | ||||
|     bool matchTest( TestCase const& testCase, TestSpec const& testSpec, IConfig const& config ); | ||||
|  | ||||
|     void enforceNoDuplicateTestCases( std::vector<TestCase> const& functions ); | ||||
| @@ -58,7 +58,7 @@ namespace Catch { | ||||
|     }; | ||||
|  | ||||
|  | ||||
|     std::string extractClassName( std::string const& classOrQualifiedMethodName ); | ||||
|     std::string extractClassName( StringRef const& classOrQualifiedMethodName ); | ||||
|  | ||||
|     /////////////////////////////////////////////////////////////////////////// | ||||
|  | ||||
|   | ||||
| @@ -15,23 +15,22 @@ namespace Catch { | ||||
|         return new(std::nothrow) TestInvokerAsFunction( testAsFunction ); | ||||
|     } | ||||
|  | ||||
|     NameAndTags::NameAndTags( StringRef name_ , StringRef tags_ ) noexcept : name( name_ ), tags( tags_ ) {} | ||||
|     NameAndTags::NameAndTags( StringRef const& name_ , StringRef const& tags_ ) noexcept : name( name_ ), tags( tags_ ) {} | ||||
|  | ||||
|     AutoReg::AutoReg( ITestInvoker* invoker, SourceLineInfo const& lineInfo, StringRef classOrMethod, NameAndTags const& nameAndTags ) noexcept { | ||||
|     AutoReg::AutoReg( ITestInvoker* invoker, SourceLineInfo const& lineInfo, StringRef const& classOrMethod, NameAndTags const& nameAndTags ) noexcept { | ||||
|         try { | ||||
|             getMutableRegistryHub() | ||||
|                     .registerTest( | ||||
|                         makeTestCase( | ||||
|                             invoker, | ||||
|                             extractClassName( classOrMethod ), | ||||
|                             nameAndTags.name, | ||||
|                             nameAndTags.tags, | ||||
|                             nameAndTags, | ||||
|                             lineInfo)); | ||||
|         } catch (...) { | ||||
|             // Do not throw when constructing global objects, instead register the exception to be processed later | ||||
|             getMutableRegistryHub().registerStartupException(); | ||||
|         } | ||||
|     } | ||||
|      | ||||
|  | ||||
|     AutoReg::~AutoReg() = default; | ||||
| } | ||||
|   | ||||
| @@ -35,13 +35,13 @@ auto makeTestInvoker( void (C::*testAsMethod)() ) noexcept -> ITestInvoker* { | ||||
| } | ||||
|  | ||||
| struct NameAndTags { | ||||
|     NameAndTags( StringRef name_ = StringRef(), StringRef tags_ = StringRef() ) noexcept; | ||||
|     NameAndTags( StringRef const& name_ = StringRef(), StringRef const& tags_ = StringRef() ) noexcept; | ||||
|     StringRef name; | ||||
|     StringRef tags; | ||||
| }; | ||||
|  | ||||
| struct AutoReg : NonCopyable { | ||||
|     AutoReg( ITestInvoker* invoker, SourceLineInfo const& lineInfo, StringRef classOrMethod, NameAndTags const& nameAndTags ) noexcept; | ||||
|     AutoReg( ITestInvoker* invoker, SourceLineInfo const& lineInfo, StringRef const& classOrMethod, NameAndTags const& nameAndTags ) noexcept; | ||||
|     ~AutoReg(); | ||||
| }; | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Martin Hořeňovský
					Martin Hořeňovský