Read-only mirrors. Development, issues and pull requests are on GitHub.

summaryrefslogtreecommitdiffhomepage
path: root/include/internal/catch_commandline.cpp
diff options
context:
space:
mode:
authorMaciej Patro2018-10-22 15:59:01 +0200
committerMartin Hořeňovský2018-10-25 15:43:30 +0200
commit8b3c09c137b532ca1480d267ae9dc367b889a408 (patch)
tree58db12ea9ab40acc52445ac44477fce3ddbd043c /include/internal/catch_commandline.cpp
parentb7f41237b1329ac3f7119beedc47c9b9f924571e (diff)
downloadcatch3-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.cpp17
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" )