mirror of
				https://github.com/catchorg/Catch2.git
				synced 2025-10-31 20:27:11 +01:00 
			
		
		
		
	Refactor some common code, use __LINE__ instead of __COUNTER__ where possible
This commit is contained in:
		| @@ -24,14 +24,12 @@ | ||||
|  | ||||
| namespace CatchOverrides { | ||||
|  | ||||
|     class ConfigGuard | ||||
|     { | ||||
|     class ConfigGuard { | ||||
|     public: | ||||
|         ConfigGuard() | ||||
|             : origConfig(Catch::getCurrentContext().getConfig()) | ||||
|         {} | ||||
|         ~ConfigGuard() | ||||
|         { | ||||
|         ~ConfigGuard() { | ||||
|             Catch::getCurrentMutableContext().setConfig(origConfig); | ||||
|         } | ||||
|         const Catch::Ptr<Catch::IConfig const>& value() const {return origConfig;} | ||||
| @@ -45,133 +43,20 @@ namespace CatchOverrides { | ||||
|     enum OverrideType { OverrideUpdate, OverrideReset}; // Note: ordered; update must be before reset | ||||
|  | ||||
|     template <typename T> | ||||
|     class Config | ||||
|     { | ||||
|         typedef std::map<std::pair<int,OverrideType>, bool> BoolLineData; | ||||
|         typedef std::map<std::string, BoolLineData> FileBoolLineData; | ||||
|         typedef std::map<std::pair<int,OverrideType>, int> LineData; | ||||
|     class ConfigLineData { | ||||
|         typedef std::map<std::pair<int,OverrideType>, T> LineData; | ||||
|         typedef std::map<std::string, LineData> FileLineData; | ||||
|         typedef std::multimap<std::pair<int,OverrideType>, std::string> StringLineData; | ||||
|         typedef std::map<std::string, StringLineData> FileStringLineData; | ||||
|     public: | ||||
|         bool includeSuccessfulResults(const std::string& file, int c) const | ||||
|         { | ||||
|             bool result(false); | ||||
|             FileBoolLineData::const_iterator it = showSuccessfulTestsData.find(file); | ||||
|             if( it != showSuccessfulTestsData.end() ) | ||||
|             { | ||||
|                 BoolLineData::const_iterator start = it->second.begin(); | ||||
|                 BoolLineData::const_iterator end = it->second.end(); | ||||
|                 for( BoolLineData::const_iterator lineIt = it->second.begin(); lineIt != it->second.end(); ++lineIt ) { | ||||
|                     const std::pair<int,OverrideType>& current = lineIt->first; | ||||
|                     if( current.second == OverrideReset ) { | ||||
|                         if( c == current.first ) { | ||||
|                             result = lineIt->second; | ||||
|                             end = lineIt; | ||||
|                             break; | ||||
|                         } | ||||
|                         else | ||||
|                             start = lineIt; | ||||
|                     } | ||||
|                 } | ||||
|                 for( BoolLineData::const_iterator lineIt = start; lineIt != end; ++lineIt ) { | ||||
|                     const std::pair<int,OverrideType>& current = lineIt->first; | ||||
|                     if( current.second == OverrideUpdate ) { | ||||
|                         if( c < current.first ) | ||||
|                             break; | ||||
|                         result = lineIt->second; | ||||
|                     } | ||||
|                 } | ||||
|             } | ||||
|             return result; | ||||
|         } | ||||
|         void insertSuccessfulResults(const std::string& file, OverrideType overRide, int c, bool v) | ||||
|         { | ||||
|             FileBoolLineData::iterator it = showSuccessfulTestsData.find(file); | ||||
|             if( it == showSuccessfulTestsData.end() ) | ||||
|             { | ||||
|                 BoolLineData tmp; | ||||
|                 std::pair<int,OverrideType> current = std::make_pair(c, overRide); | ||||
|                 tmp.insert(std::make_pair(current,v)); | ||||
|                 showSuccessfulTestsData.insert(std::make_pair(file, tmp)); | ||||
|             } | ||||
|             else | ||||
|             { | ||||
|                 std::pair<int,OverrideType> current = std::make_pair(c, overRide); | ||||
|                 BoolLineData::iterator lineIt = it->second.find(current); | ||||
|                 if( lineIt == it->second.end() ) { | ||||
|                     it->second.insert(std::make_pair(current,v)); | ||||
|                 } | ||||
|                 else { | ||||
|                     lineIt->second = v; | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
|         bool warnAboutMissingAssertions(const std::string& file, int c) const | ||||
|         { | ||||
|             bool result(false); | ||||
|             FileBoolLineData::const_iterator it = missingAssertionData.find(file); | ||||
|             if( it != missingAssertionData.end() ) | ||||
|             { | ||||
|                 BoolLineData::const_iterator start = it->second.begin(); | ||||
|                 BoolLineData::const_iterator end = it->second.end(); | ||||
|                 for( BoolLineData::const_iterator lineIt = it->second.begin(); lineIt != it->second.end(); ++lineIt ) { | ||||
|                     const std::pair<int,OverrideType>& current = lineIt->first; | ||||
|                     if( current.second == OverrideReset ) { | ||||
|                         if( c == current.first ) { | ||||
|                             result = lineIt->second; | ||||
|                             end = lineIt; | ||||
|                             break; | ||||
|                         } | ||||
|                         else | ||||
|                             start = lineIt; | ||||
|                     } | ||||
|                 } | ||||
|                 for( BoolLineData::const_iterator lineIt = start; lineIt != end; ++lineIt ) { | ||||
|                     const std::pair<int,OverrideType>& current = lineIt->first; | ||||
|                     if( current.second == OverrideUpdate ) { | ||||
|                         if( c < current.first ) | ||||
|                             break; | ||||
|                         result = lineIt->second; | ||||
|                     } | ||||
|                 } | ||||
|             } | ||||
|             return result; | ||||
|         } | ||||
|         void insertMissingAssertions(const std::string& file, OverrideType overRide, int c, bool v) | ||||
|         { | ||||
|             FileBoolLineData::iterator it = missingAssertionData.find(file); | ||||
|             if( it == missingAssertionData.end() ) | ||||
|             { | ||||
|                 BoolLineData tmp; | ||||
|                 std::pair<int,OverrideType> current = std::make_pair(c, overRide); | ||||
|                 tmp.insert(std::make_pair(current,v)); | ||||
|                 missingAssertionData.insert(std::make_pair(file, tmp)); | ||||
|             } | ||||
|             else | ||||
|             { | ||||
|                 std::pair<int,OverrideType> current = std::make_pair(c, overRide); | ||||
|                 BoolLineData::iterator lineIt = it->second.find(current); | ||||
|                 if( lineIt == it->second.end() ) { | ||||
|                     it->second.insert(std::make_pair(current,v)); | ||||
|                 } | ||||
|                 else { | ||||
|                     lineIt->second = v; | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
|         int abortAfter(const std::string& file, int c) const | ||||
|         { | ||||
|             int result(-1); | ||||
|             FileLineData::const_iterator it = abortAfterData.find(file); | ||||
|             if( it != abortAfterData.end() ) | ||||
|             { | ||||
|         T getValueForFileLine(const std::string& file, int line) const { | ||||
|             T result(false); | ||||
|             FileLineData::const_iterator it = m_data.find(file); | ||||
|             if( it != m_data.end() ) { | ||||
|                 LineData::const_iterator start = it->second.begin(); | ||||
|                 LineData::const_iterator end = it->second.end(); | ||||
|                 for( LineData::const_iterator lineIt = it->second.begin(); lineIt != it->second.end(); ++lineIt ) { | ||||
|                     const std::pair<int,OverrideType>& current = lineIt->first; | ||||
|                     if( current.second == OverrideReset ) { | ||||
|                         if( c == current.first ) { | ||||
|                         if( line == current.first ) { | ||||
|                             result = lineIt->second; | ||||
|                             end = lineIt; | ||||
|                             break; | ||||
| @@ -183,7 +68,7 @@ namespace CatchOverrides { | ||||
|                 for( LineData::const_iterator lineIt = start; lineIt != end; ++lineIt ) { | ||||
|                     const std::pair<int,OverrideType>& current = lineIt->first; | ||||
|                     if( current.second == OverrideUpdate ) { | ||||
|                         if( c < current.first ) | ||||
|                         if( line < current.first ) | ||||
|                             break; | ||||
|                         result = lineIt->second; | ||||
|                     } | ||||
| @@ -191,16 +76,17 @@ namespace CatchOverrides { | ||||
|             } | ||||
|             return result; | ||||
|         } | ||||
|         void insertAbortAfter(const std::string& file, OverrideType overRide, int c, int v) { | ||||
|             FileLineData::iterator it = abortAfterData.find(file); | ||||
|             if( it == abortAfterData.end() ) { | ||||
|         void recordValueForFileLine(const std::string& file, OverrideType overRide, int line, const T& v) | ||||
|         { | ||||
|             FileLineData::iterator it = m_data.find(file); | ||||
|             if( it == m_data.end() ) { | ||||
|                 LineData tmp; | ||||
|                 std::pair<int,OverrideType> current = std::make_pair(c, overRide); | ||||
|                 std::pair<int,OverrideType> current = std::make_pair(line, overRide); | ||||
|                 tmp.insert(std::make_pair(current,v)); | ||||
|                 abortAfterData.insert(std::make_pair(file, tmp)); | ||||
|                 m_data.insert(std::make_pair(file, tmp)); | ||||
|             } | ||||
|             else { | ||||
|                 std::pair<int,OverrideType> current = std::make_pair(c, overRide); | ||||
|                 std::pair<int,OverrideType> current = std::make_pair(line, overRide); | ||||
|                 LineData::iterator lineIt = it->second.find(current); | ||||
|                 if( lineIt == it->second.end() ) { | ||||
|                     it->second.insert(std::make_pair(current,v)); | ||||
| @@ -210,6 +96,37 @@ namespace CatchOverrides { | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
|     private: | ||||
|         FileLineData m_data; | ||||
|     }; | ||||
|  | ||||
|     template <typename T> | ||||
|     class Config { | ||||
|         typedef std::map<std::pair<int,OverrideType>, bool> BoolLineData; | ||||
|         typedef std::map<std::string, BoolLineData> FileBoolLineData; | ||||
|         typedef std::map<std::pair<int,OverrideType>, int> LineData; | ||||
|         typedef std::map<std::string, LineData> FileLineData; | ||||
|         typedef std::multimap<std::pair<int,OverrideType>, std::string> StringLineData; | ||||
|         typedef std::map<std::string, StringLineData> FileStringLineData; | ||||
|     public: | ||||
|         bool includeSuccessfulResults(const std::string& file, int line) const { | ||||
|             return showSuccessfulTestsData.getValueForFileLine(file,line); | ||||
|         } | ||||
|         void insertSuccessfulResults(const std::string& file, OverrideType overRide, int line, bool v) { | ||||
|             showSuccessfulTestsData.recordValueForFileLine(file, overRide, line, v); | ||||
|         } | ||||
|         bool warnAboutMissingAssertions(const std::string& file, int line) const { | ||||
|             return missingAssertionData.getValueForFileLine(file,line); | ||||
|         } | ||||
|         void insertMissingAssertions(const std::string& file, OverrideType overRide, int line, bool v) { | ||||
|             missingAssertionData.recordValueForFileLine(file, overRide, line, v); | ||||
|         } | ||||
|         int abortAfter(const std::string& file, int line) const { | ||||
|             return abortAfterData.getValueForFileLine(file,line); | ||||
|         } | ||||
|         void insertAbortAfter(const std::string& file, OverrideType overRide, int line, int v) { | ||||
|             abortAfterData.recordValueForFileLine(file, overRide, line, v); | ||||
|         } | ||||
|         std::vector<std::string> listOfTests(const std::string& file, int c) const { | ||||
|             std::vector<std::string> result; | ||||
|             FileStringLineData::const_iterator it = testData.find(file); | ||||
| @@ -258,9 +175,9 @@ namespace CatchOverrides { | ||||
|             return *s_instance; | ||||
|         } | ||||
|     private: | ||||
|         FileBoolLineData showSuccessfulTestsData; | ||||
|         FileBoolLineData missingAssertionData; | ||||
|         FileLineData abortAfterData; | ||||
|         ConfigLineData<bool> showSuccessfulTestsData; | ||||
|         ConfigLineData<bool> missingAssertionData; | ||||
|         ConfigLineData<int> abortAfterData; | ||||
|         FileStringLineData testData; | ||||
|          | ||||
|         static Config<T>* s_instance; | ||||
|   | ||||
| @@ -251,16 +251,16 @@ private: | ||||
| #define INTERNAL_CATCH_CONCAT_LINE_COUNTER( count ) INTERNAL_CATCH_UNIQUE_NAME_LINE( INTERNAL_CATCH_UNIQUE_NAME_LINE( __LINE__, _ ), count ) | ||||
|  | ||||
| #define CATCH_INTERNAL_CONFIG_SHOW_SUCCESS2( v, Count ) \ | ||||
|     namespace { CatchOverrides::ConfigShowSuccessfulTests<Catch::IConfig const*> INTERNAL_CATCH_UNIQUE_NAME_LINE( C_A_T_C_H_____O_V_E_R_R_I_D_E____, INTERNAL_CATCH_CONCAT_LINE_COUNTER( Count ) )(__FILE__, Count, v); } | ||||
|     namespace { CatchOverrides::ConfigShowSuccessfulTests<Catch::IConfig const*> INTERNAL_CATCH_UNIQUE_NAME_LINE( C_A_T_C_H_____O_V_E_R_R_I_D_E____, INTERNAL_CATCH_CONCAT_LINE_COUNTER( Count ) )(__FILE__, __LINE__, v); } | ||||
|  | ||||
| #define CATCH_INTERNAL_CONFIG_WARN_MISSING_ASSERTIONS2( v, Count ) \ | ||||
|     namespace { CatchOverrides::ConfigWarnMissingAssertions<Catch::IConfig const*> INTERNAL_CATCH_UNIQUE_NAME_LINE( C_A_T_C_H_____O_V_E_R_R_I_D_E____, INTERNAL_CATCH_CONCAT_LINE_COUNTER( Count ) )(__FILE__, Count, v); } | ||||
|     namespace { CatchOverrides::ConfigWarnMissingAssertions<Catch::IConfig const*> INTERNAL_CATCH_UNIQUE_NAME_LINE( C_A_T_C_H_____O_V_E_R_R_I_D_E____, INTERNAL_CATCH_CONCAT_LINE_COUNTER( Count ) )(__FILE__, __LINE__, v); } | ||||
|  | ||||
| #define CATCH_INTERNAL_CONFIG_ABORT_AFTER2( v, Count ) \ | ||||
|     namespace { CatchOverrides::ConfigAbortAfter<Catch::IConfig const*> INTERNAL_CATCH_UNIQUE_NAME_LINE( C_A_T_C_H_____O_V_E_R_R_I_D_E____, INTERNAL_CATCH_CONCAT_LINE_COUNTER( Count ) )(__FILE__, Count, v); } | ||||
|     namespace { CatchOverrides::ConfigAbortAfter<Catch::IConfig const*> INTERNAL_CATCH_UNIQUE_NAME_LINE( C_A_T_C_H_____O_V_E_R_R_I_D_E____, INTERNAL_CATCH_CONCAT_LINE_COUNTER( Count ) )(__FILE__, __LINE__, v); } | ||||
|  | ||||
| #define CATCH_INTERNAL_CONFIG_ADD_TEST2( v, Count ) \ | ||||
|     namespace { CatchOverrides::ConfigAddTest<Catch::IConfig const*> INTERNAL_CATCH_UNIQUE_NAME_LINE( C_A_T_C_H_____O_V_E_R_R_I_D_E____, INTERNAL_CATCH_CONCAT_LINE_COUNTER( Count ) )(__FILE__, Count, v); } | ||||
|     namespace { CatchOverrides::ConfigAddTest<Catch::IConfig const*> INTERNAL_CATCH_UNIQUE_NAME_LINE( C_A_T_C_H_____O_V_E_R_R_I_D_E____, INTERNAL_CATCH_CONCAT_LINE_COUNTER( Count ) )(__FILE__, __LINE__, v); } | ||||
|  | ||||
| #define CATCH_INTERNAL_CONFIG_SHOW_SUCCESS( v ) \ | ||||
|     CATCH_INTERNAL_CONFIG_SHOW_SUCCESS2( v, __COUNTER__) | ||||
| @@ -278,9 +278,9 @@ private: | ||||
|         {   CatchOverrides::ConfigGuard cg; \ | ||||
|             Catch::ConfigData cd(cg.value().get()); \ | ||||
|             cd.name = name_desc.name; \ | ||||
|             cd.showSuccessfulTests = CatchOverrides::Config<Catch::IConfig const*>::instance().includeSuccessfulResults(__FILE__, Count ); \ | ||||
|             cd.warnings            = (CatchOverrides::Config<Catch::IConfig const*>::instance().warnAboutMissingAssertions(__FILE__, Count ) ? Catch::WarnAbout::NoAssertions : Catch::WarnAbout::Nothing); \ | ||||
|             cd.abortAfter          = CatchOverrides::Config<Catch::IConfig const*>::instance().abortAfter(__FILE__, Count ); \ | ||||
|             cd.showSuccessfulTests = CatchOverrides::Config<Catch::IConfig const*>::instance().includeSuccessfulResults(__FILE__, __LINE__ ); \ | ||||
|             cd.warnings            = (CatchOverrides::Config<Catch::IConfig const*>::instance().warnAboutMissingAssertions(__FILE__, __LINE__ ) ? Catch::WarnAbout::NoAssertions : Catch::WarnAbout::Nothing); \ | ||||
|             cd.abortAfter          = CatchOverrides::Config<Catch::IConfig const*>::instance().abortAfter(__FILE__, __LINE__ ); \ | ||||
|             Catch::Ptr<Catch::Config> config(new Catch::Config(cd)); \ | ||||
|             Catch::ReporterRegistrar<Catch::MSTestReporter> reporterReg("vs_reporter"); \ | ||||
|             Catch::RunContext context(config.get(), Catch::getRegistryHub().getReporterRegistry().create( "vs_reporter", config.get())); \ | ||||
| @@ -300,7 +300,7 @@ private: | ||||
|     static void INTERNAL_CATCH_UNIQUE_NAME_LINE( C_A_T_C_H____T_E_S_T____, INTERNAL_CATCH_CONCAT_LINE_COUNTER( Count ) )(); \ | ||||
|     namespace CATCH_INTERNAL_NAMESPACE( INTERNAL_CATCH_CONCAT_LINE_COUNTER( Count ) ) { \ | ||||
|         Catch::AutoReg INTERNAL_CATCH_UNIQUE_NAME( autoRegistrar )( & INTERNAL_CATCH_UNIQUE_NAME_LINE( C_A_T_C_H____T_E_S_T____, INTERNAL_CATCH_CONCAT_LINE_COUNTER( Count ) ), CATCH_INTERNAL_LINEINFO, Catch::NameAndDesc(CATCH_INTERNAL_HANDLE_EMPTY_PARAM(Name), Desc) ); \ | ||||
|         CatchOverrides::ConfigReset<Catch::IConfig const*> INTERNAL_CATCH_UNIQUE_NAME_LINE( C_A_T_C_H____T_E_S_T____C_O_N_F_I_G___, INTERNAL_CATCH_CONCAT_LINE_COUNTER( Count ) )(__FILE__, Count, 1); \ | ||||
|         CatchOverrides::ConfigReset<Catch::IConfig const*> INTERNAL_CATCH_UNIQUE_NAME_LINE( C_A_T_C_H____T_E_S_T____C_O_N_F_I_G___, INTERNAL_CATCH_CONCAT_LINE_COUNTER( Count ) )(__FILE__, __LINE__, 1); \ | ||||
|         INTERNAL_CATCH_CLASS_DEFINITION( INTERNAL_CATCH_UNIQUE_NAME_LINE( C_A_T_C_H____T_E_S_T____C_L_A_S_S___, INTERNAL_CATCH_CONCAT_LINE_COUNTER( Count ) ) ) \ | ||||
|         { \ | ||||
|             INTERNAL_CATCH_CLASS_CONTEXT \ | ||||
| @@ -313,7 +313,7 @@ private: | ||||
|     CHECK_FOR_TEST_CASE_CLASH \ | ||||
|     namespace CATCH_INTERNAL_NAMESPACE( INTERNAL_CATCH_CONCAT_LINE_COUNTER( Count ) ) { \ | ||||
|         Catch::AutoReg INTERNAL_CATCH_UNIQUE_NAME( autoRegistrar )( & QualifiedMethod, "&" # QualifiedMethod, Catch::NameAndDesc(CATCH_INTERNAL_HANDLE_EMPTY_PARAM(Name), Desc), CATCH_INTERNAL_LINEINFO ); \ | ||||
|         CatchOverrides::ConfigReset<Catch::IConfig const*> INTERNAL_CATCH_UNIQUE_NAME_LINE( C_A_T_C_H____T_E_S_T____C_O_N_F_I_G___, INTERNAL_CATCH_CONCAT_LINE_COUNTER( Count ) )(__FILE__, Count, 1); \ | ||||
|         CatchOverrides::ConfigReset<Catch::IConfig const*> INTERNAL_CATCH_UNIQUE_NAME_LINE( C_A_T_C_H____T_E_S_T____C_O_N_F_I_G___, INTERNAL_CATCH_CONCAT_LINE_COUNTER( Count ) )(__FILE__, __LINE__, 1); \ | ||||
|         INTERNAL_CATCH_CLASS_DEFINITION( INTERNAL_CATCH_UNIQUE_NAME_LINE( C_A_T_C_H____T_E_S_T____C_L_A_S_S___, INTERNAL_CATCH_CONCAT_LINE_COUNTER( Count ) ) ) \ | ||||
|         { \ | ||||
|             INTERNAL_CATCH_CLASS_CONTEXT \ | ||||
| @@ -329,7 +329,7 @@ private: | ||||
|     }; \ | ||||
|     namespace CATCH_INTERNAL_NAMESPACE( INTERNAL_CATCH_CONCAT_LINE_COUNTER( Count ) ) { \ | ||||
|         Catch::AutoReg INTERNAL_CATCH_UNIQUE_NAME( autoRegistrar )( & INTERNAL_CATCH_UNIQUE_NAME_LINE( C_A_T_C_H____T_E_S_T____, INTERNAL_CATCH_CONCAT_LINE_COUNTER( Count ) )::invoke, CATCH_INTERNAL_LINEINFO, Catch::NameAndDesc(CATCH_INTERNAL_HANDLE_EMPTY_PARAM(TestName), Desc) ); \ | ||||
|         CatchOverrides::ConfigReset<Catch::IConfig const*> INTERNAL_CATCH_UNIQUE_NAME_LINE( C_A_T_C_H____T_E_S_T____C_O_N_F_I_G___, INTERNAL_CATCH_CONCAT_LINE_COUNTER( Count ) )(__FILE__, Count, 1); \ | ||||
|         CatchOverrides::ConfigReset<Catch::IConfig const*> INTERNAL_CATCH_UNIQUE_NAME_LINE( C_A_T_C_H____T_E_S_T____C_O_N_F_I_G___, INTERNAL_CATCH_CONCAT_LINE_COUNTER( Count ) )(__FILE__, __LINE__, 1); \ | ||||
|         INTERNAL_CATCH_CLASS_DEFINITION( INTERNAL_CATCH_UNIQUE_NAME_LINE( C_A_T_C_H____T_E_S_T____C_L_A_S_S___, INTERNAL_CATCH_CONCAT_LINE_COUNTER( Count ) ) ) \ | ||||
|         { \ | ||||
|             INTERNAL_CATCH_CLASS_CONTEXT \ | ||||
| @@ -362,16 +362,16 @@ private: | ||||
| #define INTERNAL_CATCH_MAP_CATEGORY_TO_TAG2( Category, Tag, Count ) \ | ||||
|     CHECK_FOR_TEST_CASE_CLASH \ | ||||
|     namespace CATCH_INTERNAL_NAMESPACE( INTERNAL_CATCH_CONCAT_LINE_COUNTER( Count ) ) { \ | ||||
|         CatchOverrides::ConfigReset<Catch::IConfig const*> INTERNAL_CATCH_UNIQUE_NAME_LINE( C_A_T_C_H____T_E_S_T____C_O_N_F_I_G___, INTERNAL_CATCH_CONCAT_LINE_COUNTER( Count ) )(__FILE__, Count, -1); \ | ||||
|         CatchOverrides::ConfigReset<Catch::IConfig const*> INTERNAL_CATCH_UNIQUE_NAME_LINE( C_A_T_C_H____T_E_S_T____C_O_N_F_I_G___, INTERNAL_CATCH_CONCAT_LINE_COUNTER( Count ) )(__FILE__, __LINE__, -1); \ | ||||
|         INTERNAL_CATCH_CLASS_DEFINITION( INTERNAL_CATCH_UNIQUE_NAME_LINE( C_A_T_C_H____T_E_S_T____C_L_A_S_S___, INTERNAL_CATCH_CONCAT_LINE_COUNTER( Count ) ) ) \ | ||||
|         { \ | ||||
|             INTERNAL_CATCH_CLASS_CONTEXT \ | ||||
| 	        BEGIN_INTERNAL_CATCH_BATCH_METHOD( Category, INTERNAL_CATCH_CONCAT_LINE_COUNTER( Count ) ) \ | ||||
|             { \ | ||||
|                 Catch::ConfigData cd; \ | ||||
|                 cd.showSuccessfulTests = CatchOverrides::Config<Catch::IConfig const*>::instance().includeSuccessfulResults(__FILE__, Count ); \ | ||||
|                 cd.warnings            = (CatchOverrides::Config<Catch::IConfig const*>::instance().warnAboutMissingAssertions(__FILE__, Count ) ? Catch::WarnAbout::NoAssertions : Catch::WarnAbout::Nothing); \ | ||||
|                 cd.abortAfter          = CatchOverrides::Config<Catch::IConfig const*>::instance().abortAfter(__FILE__, Count ); \ | ||||
|                 cd.showSuccessfulTests = CatchOverrides::Config<Catch::IConfig const*>::instance().includeSuccessfulResults(__FILE__, __LINE__ ); \ | ||||
|                 cd.warnings            = (CatchOverrides::Config<Catch::IConfig const*>::instance().warnAboutMissingAssertions(__FILE__, __LINE__ ) ? Catch::WarnAbout::NoAssertions : Catch::WarnAbout::Nothing); \ | ||||
|                 cd.abortAfter          = CatchOverrides::Config<Catch::IConfig const*>::instance().abortAfter(__FILE__, __LINE__ ); \ | ||||
|                 cd.reporterName = "vs_reporterlf"; \ | ||||
|                 cd.name = "Batch run using tag : " Tag; \ | ||||
|                 cd.testsOrTags.push_back( Tag ); \ | ||||
| @@ -389,19 +389,19 @@ private: | ||||
| #define INTERNAL_CATCH_MAP_CATEGORY_TO_LIST2( Category, CategoryName, Count ) \ | ||||
|     CHECK_FOR_TEST_CASE_CLASH \ | ||||
|     namespace CATCH_INTERNAL_NAMESPACE( INTERNAL_CATCH_CONCAT_LINE_COUNTER( Count ) ) { \ | ||||
|         CatchOverrides::ConfigReset<Catch::IConfig const*> INTERNAL_CATCH_UNIQUE_NAME_LINE( C_A_T_C_H____T_E_S_T____C_O_N_F_I_G___, INTERNAL_CATCH_CONCAT_LINE_COUNTER( Count ) )(__FILE__, Count, -1); \ | ||||
|         CatchOverrides::ConfigReset<Catch::IConfig const*> INTERNAL_CATCH_UNIQUE_NAME_LINE( C_A_T_C_H____T_E_S_T____C_O_N_F_I_G___, INTERNAL_CATCH_CONCAT_LINE_COUNTER( Count ) )(__FILE__, __LINE__, -1); \ | ||||
|         INTERNAL_CATCH_CLASS_DEFINITION( INTERNAL_CATCH_UNIQUE_NAME_LINE( C_A_T_C_H____T_E_S_T____C_L_A_S_S___, INTERNAL_CATCH_CONCAT_LINE_COUNTER( Count ) ) ) \ | ||||
|         { \ | ||||
|             INTERNAL_CATCH_CLASS_CONTEXT \ | ||||
| 	        BEGIN_INTERNAL_CATCH_BATCH_METHOD( Category, INTERNAL_CATCH_CONCAT_LINE_COUNTER( Count ) ) \ | ||||
|             { \ | ||||
|                 Catch::ConfigData cd; \ | ||||
|                 cd.showSuccessfulTests = CatchOverrides::Config<Catch::IConfig const*>::instance().includeSuccessfulResults(__FILE__, Count ); \ | ||||
|                 cd.warnings            = (CatchOverrides::Config<Catch::IConfig const*>::instance().warnAboutMissingAssertions(__FILE__, Count ) ? Catch::WarnAbout::NoAssertions : Catch::WarnAbout::Nothing); \ | ||||
|                 cd.abortAfter          = CatchOverrides::Config<Catch::IConfig const*>::instance().abortAfter(__FILE__, Count ); \ | ||||
|                 cd.showSuccessfulTests = CatchOverrides::Config<Catch::IConfig const*>::instance().includeSuccessfulResults(__FILE__, __LINE__ ); \ | ||||
|                 cd.warnings            = (CatchOverrides::Config<Catch::IConfig const*>::instance().warnAboutMissingAssertions(__FILE__, __LINE__ ) ? Catch::WarnAbout::NoAssertions : Catch::WarnAbout::Nothing); \ | ||||
|                 cd.abortAfter          = CatchOverrides::Config<Catch::IConfig const*>::instance().abortAfter(__FILE__, __LINE__ ); \ | ||||
|                 cd.reporterName = "vs_reporterlf"; \ | ||||
|                 cd.name = "Batch run using category : " CategoryName; \ | ||||
|                 std::vector<std::string> stringNames = CatchOverrides::Config<Catch::IConfig const*>::instance().listOfTests(__FILE__, Count ); \ | ||||
|                 std::vector<std::string> stringNames = CatchOverrides::Config<Catch::IConfig const*>::instance().listOfTests(__FILE__, __LINE__ ); \ | ||||
|                 Catch::Ptr<Catch::Config> config(new Catch::Config(cd)); \ | ||||
|                 Catch::ReporterRegistrar<Catch::MSTestReporterLineFeed> reporterReg("vs_reporterlf"); \ | ||||
|                 Catch::RunContext context(config.get(), Catch::getRegistryHub().getReporterRegistry().create( "vs_reporterlf", config.get())); \ | ||||
|   | ||||
| @@ -134,7 +134,14 @@ class TestConditionData: | ||||
| 			if not(reasonOnSameLine) and len(self.reason): | ||||
| 				lines.append(self.reason) | ||||
| 		if len(self.condition): | ||||
| 			lines.append("  " + self.condition) | ||||
| 			line = self.condition | ||||
| 			m = self.hexParser.match(line) | ||||
| 			if m: | ||||
| 				while m: | ||||
| 					line = m.group(1) + "0x<hex digits>" + m.group(3) | ||||
| 					m = self.hexParser.match(line) | ||||
| 			line = line.replace("__null","0") | ||||
| 			lines.append("  " + line) | ||||
| 		if len(self.expansionPrefix): | ||||
| 			lines.append(self.expansionPrefix) | ||||
| 			extraLine = True | ||||
| @@ -145,6 +152,7 @@ class TestConditionData: | ||||
| 					while m: | ||||
| 						line = m.group(1) + "0x<hex digits>" + m.group(3) | ||||
| 						m = self.hexParser.match(line) | ||||
| 				line = line.replace("__null","0") | ||||
| 				lines.append("  " + line) | ||||
| 		if len(self.messagePrefix): | ||||
| 			lines.append(self.messagePrefix) | ||||
| @@ -223,7 +231,14 @@ class TestConditionData: | ||||
| 			if not(reasonOnSameLine) and len(self.reason): | ||||
| 				lines.append(self.reason) | ||||
| 		if len(self.condition): | ||||
| 			lines.append("  " + self.condition) | ||||
| 			line = self.condition | ||||
| 			m = self.hexParser.match(line) | ||||
| 			if m: | ||||
| 				while m: | ||||
| 					line = m.group(1) + "0x<hex digits>" + m.group(3) | ||||
| 					m = self.hexParser.match(line) | ||||
| 			line = line.replace("Catch::Text","Text") | ||||
| 			lines.append("  " + line) | ||||
| 		if len(self.expansionPrefix): | ||||
| 			lines.append(self.expansionPrefix) | ||||
| 			extraLine = True | ||||
|   | ||||
| @@ -44,8 +44,8 @@ def approve( baseName, args ): | ||||
| 	rawResultsPath = os.path.join( rootPath, '_{0}.tmp'.format( baseName ) ) | ||||
| 	if os.path.exists( baselinesPath ): | ||||
| 		approvedFileHandler = TestRunApprovedHandler(baselinesPath) | ||||
| 		baselinesPathNew = os.path.join( rootPath, '{0}.approved.new.txt'.format( baseName ) ) | ||||
| 		approvedFileHandler.writeRawFile(baselinesPathNew) | ||||
| 		#baselinesPathNew = os.path.join( rootPath, '{0}.approved.new.txt'.format( baseName ) ) | ||||
| 		#approvedFileHandler.writeRawFile(baselinesPathNew) | ||||
| 		approvedFileHandler.writeSortedRawFile(baselinesSortedPath) | ||||
| 	else: | ||||
| 		raise Exception("Base file does not exist: '" + baselinesPath + "'") | ||||
| @@ -59,11 +59,12 @@ def approve( baseName, args ): | ||||
|  | ||||
| 	if os.path.exists( rawResultsPath ): | ||||
| 		resultFileHandler = TestRunResultHandler(rawResultsPath) | ||||
| 		rawPathNew = os.path.join( rootPath, '{0}.rewrite.txt'.format( baseName ) ) | ||||
| 		#rawPathNew = os.path.join( rootPath, '{0}.rewrite.txt'.format( baseName ) ) | ||||
| 		#print "F:",rawPathNew,",",approvedFileHandler.current.outputLine | ||||
| 		resultFileHandler.writeRawFile(rawPathNew) | ||||
| 		#resultFileHandler.writeRawFile(rawPathNew) | ||||
| 		rawPathNewSorted = os.path.join( rootPath, '{0}.sorted.unapproved.txt'.format( baseName ) ) | ||||
| 		resultFileHandler.writeSortedUnapprovedFile(rawPathNewSorted, approvedFileHandler.current.outputLine) | ||||
| 		os.remove( rawResultsPath ) | ||||
| 	else: | ||||
| 		raise Exception("Results file does not exist: '" + rawResultsPath + "'") | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Malcolm Noyes
					Malcolm Noyes