* moved location of MAX_RANGES to tweakme.h so end user can modify how many ranges they want to allow

* added an additional test to check what happens when user specifies too many color ranges.
pull/1621/head
Josh Schmiedlin 5 years ago
parent eda57a0070
commit 032df3b613

@ -9,7 +9,6 @@
namespace spdlog { namespace spdlog {
namespace details { namespace details {
const size_t MAX_RANGES = 5;
struct SPDLOG_API log_msg struct SPDLOG_API log_msg
{ {
log_msg() = default; log_msg() = default;

@ -44,9 +44,9 @@ SPDLOG_INLINE void ansicolor_sink<ConsoleMutex>::log(const details::log_msg &msg
// If color is not supported in the terminal, log as is instead. // If color is not supported in the terminal, log as is instead.
std::lock_guard<mutex_t> lock(mutex_); std::lock_guard<mutex_t> lock(mutex_);
msg.num_start_ranges = 0; msg.num_start_ranges = 0;
memset(msg.color_ranges_start, 0, sizeof(size_t) * spdlog::details::MAX_RANGES); memset(msg.color_ranges_start, 0, sizeof(size_t) * MAX_RANGES);
msg.num_end_ranges = 0; msg.num_end_ranges = 0;
memset(msg.color_ranges_end, 0, sizeof(size_t) * spdlog::details::MAX_RANGES); memset(msg.color_ranges_end, 0, sizeof(size_t) * MAX_RANGES);
memory_buf_t formatted; memory_buf_t formatted;
formatter_->format(msg, formatted); formatter_->format(msg, formatted);
if (should_do_colors_ && msg.num_start_ranges == msg.num_end_ranges) if (should_do_colors_ && msg.num_start_ranges == msg.num_end_ranges)

@ -114,3 +114,10 @@
// //
// #define SPDLOG_FUNCTION __PRETTY_FUNCTION__ // #define SPDLOG_FUNCTION __PRETTY_FUNCTION__
/////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
// Modify to allow for more or less color ranges
//
#define MAX_RANGES 3
///////////////////////////////////////////////////////////////////////////////

@ -172,6 +172,24 @@ TEST_CASE("color multi-range test2", "[pattern_formatter]")
REQUIRE(msg.color_ranges_end[1] == 9); REQUIRE(msg.color_ranges_end[1] == 9);
} }
// Test case where users supplies more ranges then are allowed. MAX_RANGES is defined as 3 by default.
TEST_CASE("color multi-range test3", "[pattern_formatter]")
{
auto formatter = std::make_shared<spdlog::pattern_formatter>("%^***%$***%^***%$***%^***%$***%^***%$");
std::string logger_name = "test";
spdlog::details::log_msg msg(logger_name, spdlog::level::info, "ignored");
memory_buf_t formatted;
formatter->format(msg, formatted);
REQUIRE(msg.num_start_ranges == 3);
REQUIRE(msg.num_end_ranges == 3);
REQUIRE(msg.color_ranges_start[0] == 0);
REQUIRE(msg.color_ranges_start[1] == 6);
REQUIRE(msg.color_ranges_start[2] == 12);
REQUIRE(msg.color_ranges_end[0] == 3);
REQUIRE(msg.color_ranges_end[1] == 9);
REQUIRE(msg.color_ranges_end[2] == 15);
}
// //
// Test padding // Test padding
// //

Loading…
Cancel
Save