mirror of
https://github.com/catchorg/Catch2.git
synced 2024-11-25 23:06:10 +01:00
Split out colour mode string parsing into its own function
This commit is contained in:
parent
c045733d05
commit
d750da13a8
@ -8,6 +8,8 @@
|
|||||||
|
|
||||||
#include <catch2/internal/catch_reporter_spec_parser.hpp>
|
#include <catch2/internal/catch_reporter_spec_parser.hpp>
|
||||||
|
|
||||||
|
#include <catch2/interfaces/catch_interfaces_config.hpp>
|
||||||
|
|
||||||
namespace Catch {
|
namespace Catch {
|
||||||
|
|
||||||
namespace Detail {
|
namespace Detail {
|
||||||
@ -59,6 +61,21 @@ namespace Catch {
|
|||||||
|
|
||||||
return parts;
|
return parts;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Optional<ColourMode> stringToColourMode( StringRef colourMode ) {
|
||||||
|
if ( colourMode == "default" ) {
|
||||||
|
return ColourMode::PlatformDefault;
|
||||||
|
} else if ( colourMode == "ansi" ) {
|
||||||
|
return ColourMode::ANSI;
|
||||||
|
} else if ( colourMode == "win32" ) {
|
||||||
|
return ColourMode::Win32;
|
||||||
|
} else if ( colourMode == "none" ) {
|
||||||
|
return ColourMode::None;
|
||||||
|
} else {
|
||||||
|
return {};
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
} // namespace Detail
|
||||||
|
|
||||||
|
|
||||||
} // namespace Catch
|
} // namespace Catch
|
||||||
|
@ -8,6 +8,7 @@
|
|||||||
#ifndef CATCH_REPORTER_SPEC_PARSER_HPP_INCLUDED
|
#ifndef CATCH_REPORTER_SPEC_PARSER_HPP_INCLUDED
|
||||||
#define CATCH_REPORTER_SPEC_PARSER_HPP_INCLUDED
|
#define CATCH_REPORTER_SPEC_PARSER_HPP_INCLUDED
|
||||||
|
|
||||||
|
#include <catch2/internal/catch_optional.hpp>
|
||||||
#include <catch2/internal/catch_stringref.hpp>
|
#include <catch2/internal/catch_stringref.hpp>
|
||||||
|
|
||||||
#include <vector>
|
#include <vector>
|
||||||
@ -15,9 +16,13 @@
|
|||||||
|
|
||||||
namespace Catch {
|
namespace Catch {
|
||||||
|
|
||||||
|
enum class ColourMode : std::uint8_t;
|
||||||
|
|
||||||
namespace Detail {
|
namespace Detail {
|
||||||
//! Splits the reporter spec into reporter name and kv-pair options
|
//! Splits the reporter spec into reporter name and kv-pair options
|
||||||
std::vector<std::string> splitReporterSpec( StringRef reporterSpec );
|
std::vector<std::string> splitReporterSpec( StringRef reporterSpec );
|
||||||
|
|
||||||
|
Optional<ColourMode> stringToColourMode( StringRef colourMode );
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -9,6 +9,7 @@
|
|||||||
#include <catch2/catch_test_macros.hpp>
|
#include <catch2/catch_test_macros.hpp>
|
||||||
#include <catch2/internal/catch_reporter_spec_parser.hpp>
|
#include <catch2/internal/catch_reporter_spec_parser.hpp>
|
||||||
#include <catch2/matchers/catch_matchers_vector.hpp>
|
#include <catch2/matchers/catch_matchers_vector.hpp>
|
||||||
|
#include <catch2/interfaces/catch_interfaces_config.hpp>
|
||||||
|
|
||||||
TEST_CASE("Reporter spec splitting", "[reporter-spec][cli][approvals]") {
|
TEST_CASE("Reporter spec splitting", "[reporter-spec][cli][approvals]") {
|
||||||
using Catch::Detail::splitReporterSpec;
|
using Catch::Detail::splitReporterSpec;
|
||||||
@ -44,3 +45,20 @@ TEST_CASE("Reporter spec splitting", "[reporter-spec][cli][approvals]") {
|
|||||||
"key:key=value:value"s } ) );
|
"key:key=value:value"s } ) );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TEST_CASE( "Parsing colour mode", "[cli][colour][approvals]" ) {
|
||||||
|
using Catch::Detail::stringToColourMode;
|
||||||
|
using Catch::ColourMode;
|
||||||
|
SECTION("Valid strings") {
|
||||||
|
REQUIRE( stringToColourMode( "none" ) == ColourMode::None );
|
||||||
|
REQUIRE( stringToColourMode( "ansi" ) == ColourMode::ANSI );
|
||||||
|
REQUIRE( stringToColourMode( "win32" ) == ColourMode::Win32 );
|
||||||
|
REQUIRE( stringToColourMode( "default" ) ==
|
||||||
|
ColourMode::PlatformDefault );
|
||||||
|
}
|
||||||
|
SECTION("Wrong strings") {
|
||||||
|
REQUIRE_FALSE( stringToColourMode( "NONE" ) );
|
||||||
|
REQUIRE_FALSE( stringToColourMode( "-" ) );
|
||||||
|
REQUIRE_FALSE( stringToColourMode( "asdbjsdb kasbd" ) );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user