diff --git a/include/spdlog/cfg/argv.h b/include/spdlog/cfg/argv.h index 46624439..83dd3687 100644 --- a/include/spdlog/cfg/argv.h +++ b/include/spdlog/cfg/argv.h @@ -22,7 +22,7 @@ namespace spdlog { namespace cfg { namespace argv { // search for SPDLOG_LEVEL= in the args and use it to init the levels -void load_levels(int args, char *argv[]) +void load_levels(int args, const char *argv[]) { const std::string spdlog_level_prefix = "SPDLOG_LEVEL="; for (int i = 1; i < args; i++) diff --git a/include/spdlog/cfg/log_levels.h b/include/spdlog/cfg/log_levels.h index 0fce95e9..867fe96b 100644 --- a/include/spdlog/cfg/log_levels.h +++ b/include/spdlog/cfg/log_levels.h @@ -11,8 +11,7 @@ namespace spdlog { namespace cfg { class log_levels { - using levels_map = std::unordered_map; - levels_map levels_; + std::unordered_map levels_; spdlog::level::level_enum default_level_ = level::info; public: diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 3184e9b6..f57fe23e 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -23,7 +23,8 @@ set(SPDLOG_UTESTS_SOURCES test_fmt_helper.cpp test_stdout_api.cpp test_backtrace.cpp - test_create_dir.cpp) + test_create_dir.cpp + test_cfg.cpp) if(NOT SPDLOG_NO_EXCEPTIONS) list(APPEND SPDLOG_UTESTS_SOURCES test_errors.cpp) diff --git a/tests/includes.h b/tests/includes.h index 2fd30370..98734b18 100644 --- a/tests/includes.h +++ b/tests/includes.h @@ -11,6 +11,7 @@ #include #include #include +#include #define SPDLOG_ACTIVE_LEVEL SPDLOG_LEVEL_DEBUG diff --git a/tests/meson.build b/tests/meson.build index 24feb0a6..d59e702c 100644 --- a/tests/meson.build +++ b/tests/meson.build @@ -14,7 +14,8 @@ test_sources = files([ 'test_fmt_helper.cpp', 'test_stdout_api.cpp', 'test_backtrace.cpp', - 'test_create_dir.cpp' + 'test_create_dir.cpp', + 'test_cfg.cpp', ]) if not get_option('no_exceptions') diff --git a/tests/test_cfg.cpp b/tests/test_cfg.cpp index 2bef6ef7..2d7b9419 100644 --- a/tests/test_cfg.cpp +++ b/tests/test_cfg.cpp @@ -2,9 +2,56 @@ #include "test_sink.h" #include +#include -TEST_CASE("env", "[cfg]") +TEST_CASE("env", "[loaders]") { - spdlog::logger l{"l1"}; + auto l1 = spdlog::create("l1"); + setenv("SPDLOG_LEVEL", "l1=warn", 1); + spdlog::cfg::env::load_levels(); + REQUIRE(l1->level() == spdlog::level::warn); + REQUIRE(spdlog::default_logger()->level() == spdlog::level::info); + spdlog::drop(l1->name()); } +TEST_CASE("argv1", "[loaders]") +{ + const char* argv[] = {"ignore", "SPDLOG_LEVEL=l1=warn"}; + spdlog::cfg::argv::load_levels(2, argv); + auto l1 = spdlog::create("l1"); + REQUIRE(l1->level() == spdlog::level::warn); + REQUIRE(spdlog::default_logger()->level() == spdlog::level::info); + spdlog::drop(l1->name()); +} + +TEST_CASE("argv2", "[loaders]") +{ + const char* argv[] = {"ignore", "SPDLOG_LEVEL=l1=warn,trace"}; + spdlog::cfg::argv::load_levels(2, argv); + auto l1 = spdlog::create("l1"); + REQUIRE(l1->level() == spdlog::level::warn); + REQUIRE(spdlog::default_logger()->level() == spdlog::level::trace); + spdlog::drop(l1->name()); +} + +TEST_CASE("argv3", "[loaders]") +{ + const char* argv[] = {"ignore", "SPDLOG_LEVEL="}; + spdlog::cfg::argv::load_levels(2, argv); + auto l1 = spdlog::create("l1"); + REQUIRE(l1->level() == spdlog::level::info); + REQUIRE(spdlog::default_logger()->level() == spdlog::level::info); + spdlog::drop(l1->name()); +} + +TEST_CASE("argv4", "[loaders]") +{ + const char* argv[] = {"ignore", "SPDLOG_LEVEL=junk"}; + spdlog::cfg::argv::load_levels(2, argv); + auto l1 = spdlog::create("l1"); + REQUIRE(l1->level() == spdlog::level::info); + spdlog::drop(l1->name()); +} + + +