mirror of
				https://github.com/catchorg/Catch2.git
				synced 2025-10-31 20:27:11 +01:00 
			
		
		
		
	Moved runner helpers into Catch namespace
not sure they weren't there to start with
This commit is contained in:
		| @@ -22,97 +22,91 @@ | ||||
| #include <cstdlib> | ||||
| #include <iomanip> | ||||
|  | ||||
| namespace Catch { | ||||
|  | ||||
| namespace { | ||||
|     const int MaxExitCode = 255; | ||||
|     using Catch::IStreamingReporterPtr; | ||||
|     using Catch::IConfigPtr; | ||||
|     using Catch::Config; | ||||
|     namespace { | ||||
|         const int MaxExitCode = 255; | ||||
|  | ||||
|     IStreamingReporterPtr createReporter(std::string const& reporterName, IConfigPtr const& config) { | ||||
|         auto reporter = Catch::getRegistryHub().getReporterRegistry().create(reporterName, config); | ||||
|         CATCH_ENFORCE(reporter, "No reporter registered with name: '" << reporterName << "'"); | ||||
|         IStreamingReporterPtr createReporter(std::string const& reporterName, IConfigPtr const& config) { | ||||
|             auto reporter = Catch::getRegistryHub().getReporterRegistry().create(reporterName, config); | ||||
|             CATCH_ENFORCE(reporter, "No reporter registered with name: '" << reporterName << "'"); | ||||
|  | ||||
|         return reporter; | ||||
|     } | ||||
|             return reporter; | ||||
|         } | ||||
|  | ||||
| #ifndef CATCH_CONFIG_DEFAULT_REPORTER | ||||
| #define CATCH_CONFIG_DEFAULT_REPORTER "console" | ||||
| #endif | ||||
|  | ||||
|     IStreamingReporterPtr makeReporter(std::shared_ptr<Config> const& config) { | ||||
|         auto const& reporterNames = config->getReporterNames(); | ||||
|         if (reporterNames.empty()) | ||||
|             return createReporter(CATCH_CONFIG_DEFAULT_REPORTER, config); | ||||
|         IStreamingReporterPtr makeReporter(std::shared_ptr<Config> const& config) { | ||||
|             auto const& reporterNames = config->getReporterNames(); | ||||
|             if (reporterNames.empty()) | ||||
|                 return createReporter(CATCH_CONFIG_DEFAULT_REPORTER, config); | ||||
|  | ||||
|         IStreamingReporterPtr reporter; | ||||
|         for (auto const& name : reporterNames) | ||||
|             addReporter(reporter, createReporter(name, config)); | ||||
|         return reporter; | ||||
|     } | ||||
|             IStreamingReporterPtr reporter; | ||||
|             for (auto const& name : reporterNames) | ||||
|                 addReporter(reporter, createReporter(name, config)); | ||||
|             return reporter; | ||||
|         } | ||||
|  | ||||
| #undef CATCH_CONFIG_DEFAULT_REPORTER | ||||
|  | ||||
|     void addListeners(IStreamingReporterPtr& reporters, IConfigPtr const& config) { | ||||
|         auto const& listeners = Catch::getRegistryHub().getReporterRegistry().getListeners(); | ||||
|         for (auto const& listener : listeners) | ||||
|             addReporter(reporters, listener->create(Catch::ReporterConfig(config))); | ||||
|     } | ||||
|  | ||||
|  | ||||
|     Catch::Totals runTests(std::shared_ptr<Config> const& config) { | ||||
|         using namespace Catch; | ||||
|         IStreamingReporterPtr reporter = makeReporter(config); | ||||
|         addListeners(reporter, config); | ||||
|  | ||||
|         RunContext context(config, std::move(reporter)); | ||||
|  | ||||
|         Totals totals; | ||||
|  | ||||
|         context.testGroupStarting(config->name(), 1, 1); | ||||
|  | ||||
|         TestSpec testSpec = config->testSpec(); | ||||
|         if (!testSpec.hasFilters()) | ||||
|             testSpec = TestSpecParser(ITagAliasRegistry::get()).parse("~[.]").testSpec(); // All not hidden tests | ||||
|  | ||||
|         auto const& allTestCases = getAllTestCasesSorted(*config); | ||||
|         for (auto const& testCase : allTestCases) { | ||||
|             if (!context.aborting() && matchTest(testCase, testSpec, *config)) | ||||
|                 totals += context.runTest(testCase); | ||||
|             else | ||||
|                 context.reporter().skipTest(testCase); | ||||
|         void addListeners(IStreamingReporterPtr& reporters, IConfigPtr const& config) { | ||||
|             auto const& listeners = Catch::getRegistryHub().getReporterRegistry().getListeners(); | ||||
|             for (auto const& listener : listeners) | ||||
|                 addReporter(reporters, listener->create(Catch::ReporterConfig(config))); | ||||
|         } | ||||
|  | ||||
|         context.testGroupEnded(config->name(), totals, 1, 1); | ||||
|         return totals; | ||||
|     } | ||||
|  | ||||
|     void applyFilenamesAsTags(Catch::IConfig const& config) { | ||||
|         using namespace Catch; | ||||
|         auto& tests = const_cast<std::vector<TestCase>&>(getAllTestCasesSorted(config)); | ||||
|         for (auto& testCase : tests) { | ||||
|             auto tags = testCase.tags; | ||||
|         Catch::Totals runTests(std::shared_ptr<Config> const& config) { | ||||
|             IStreamingReporterPtr reporter = makeReporter(config); | ||||
|             addListeners(reporter, config); | ||||
|  | ||||
|             std::string filename = testCase.lineInfo.file; | ||||
|             auto lastSlash = filename.find_last_of("\\/"); | ||||
|             if (lastSlash != std::string::npos) { | ||||
|                 filename.erase(0, lastSlash); | ||||
|                 filename[0] = '#'; | ||||
|             RunContext context(config, std::move(reporter)); | ||||
|  | ||||
|             Totals totals; | ||||
|  | ||||
|             context.testGroupStarting(config->name(), 1, 1); | ||||
|  | ||||
|             TestSpec testSpec = config->testSpec(); | ||||
|             if (!testSpec.hasFilters()) | ||||
|                 testSpec = TestSpecParser(ITagAliasRegistry::get()).parse("~[.]").testSpec(); // All not hidden tests | ||||
|  | ||||
|             auto const& allTestCases = getAllTestCasesSorted(*config); | ||||
|             for (auto const& testCase : allTestCases) { | ||||
|                 if (!context.aborting() && matchTest(testCase, testSpec, *config)) | ||||
|                     totals += context.runTest(testCase); | ||||
|                 else | ||||
|                     context.reporter().skipTest(testCase); | ||||
|             } | ||||
|  | ||||
|             auto lastDot = filename.find_last_of('.'); | ||||
|             if (lastDot != std::string::npos) { | ||||
|                 filename.erase(lastDot); | ||||
|             } | ||||
|  | ||||
|             tags.push_back(std::move(filename)); | ||||
|             setTags(testCase, tags); | ||||
|             context.testGroupEnded(config->name(), totals, 1, 1); | ||||
|             return totals; | ||||
|         } | ||||
|     } | ||||
|  | ||||
| } | ||||
|         void applyFilenamesAsTags(Catch::IConfig const& config) { | ||||
|             auto& tests = const_cast<std::vector<TestCase>&>(getAllTestCasesSorted(config)); | ||||
|             for (auto& testCase : tests) { | ||||
|                 auto tags = testCase.tags; | ||||
|  | ||||
| namespace Catch { | ||||
|                 std::string filename = testCase.lineInfo.file; | ||||
|                 auto lastSlash = filename.find_last_of("\\/"); | ||||
|                 if (lastSlash != std::string::npos) { | ||||
|                     filename.erase(0, lastSlash); | ||||
|                     filename[0] = '#'; | ||||
|                 } | ||||
|  | ||||
|                 auto lastDot = filename.find_last_of('.'); | ||||
|                 if (lastDot != std::string::npos) { | ||||
|                     filename.erase(lastDot); | ||||
|                 } | ||||
|  | ||||
|                 tags.push_back(std::move(filename)); | ||||
|                 setTags(testCase, tags); | ||||
|             } | ||||
|         } | ||||
|  | ||||
|     } // anon namespace | ||||
|  | ||||
|     Session::Session() { | ||||
|         static bool alreadyInstantiated = false; | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Phil Nash
					Phil Nash