diff options
| author | Maciej Patro | 2018-10-22 15:59:01 +0200 |
|---|---|---|
| committer | Martin Hořeňovský | 2018-10-25 15:43:30 +0200 |
| commit | 8b3c09c137b532ca1480d267ae9dc367b889a408 (patch) | |
| tree | 58db12ea9ab40acc52445ac44477fce3ddbd043c /include/internal/catch_commandline.cpp | |
| parent | b7f41237b1329ac3f7119beedc47c9b9f924571e (diff) | |
| download | catch3-8b3c09c137b532ca1480d267ae9dc367b889a408.tar.gz | |
Catch's CLI now checks whether requested reporter exists
Fixes #1351
Diffstat (limited to 'include/internal/catch_commandline.cpp')
| -rw-r--r-- | include/internal/catch_commandline.cpp | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/include/internal/catch_commandline.cpp b/include/internal/catch_commandline.cpp index c57b7ed7..66759ebb 100644 --- a/include/internal/catch_commandline.cpp +++ b/include/internal/catch_commandline.cpp @@ -10,6 +10,9 @@ #include "catch_string_manip.h" +#include "catch_interfaces_registry_hub.h" +#include "catch_interfaces_reporter.h" + #include <fstream> #include <ctime> @@ -105,6 +108,18 @@ namespace Catch { return ParserResult::runtimeError( "Unrecognised verbosity, '" + verbosity + "'" ); return ParserResult::ok( ParseResultType::Matched ); }; + auto const setReporter = [&]( std::string const& reporter ) { + IReporterRegistry::FactoryMap const& factories = getRegistryHub().getReporterRegistry().getFactories(); + + auto lcReporter = toLower( reporter ); + auto result = factories.find( lcReporter ); + + if( factories.end() != result ) + config.reporterName = lcReporter; + else + return ParserResult::runtimeError( "Unrecognized reporter, '" + reporter + "'. Check available with --list-reporters" ); + return ParserResult::ok( ParseResultType::Matched ); + }; auto cli = ExeName( config.processName ) @@ -130,7 +145,7 @@ namespace Catch { | Opt( config.outputFilename, "filename" ) ["-o"]["--out"] ( "output filename" ) - | Opt( config.reporterName, "name" ) + | Opt( setReporter, "name" ) ["-r"]["--reporter"] ( "reporter to use (defaults to console)" ) | Opt( config.name, "name" ) |