spdlog
Loading...
Searching...
No Matches
test_cfg.cpp
Go to the documentation of this file.
1
2#include "includes.h"
3#include "test_sink.h"
4
5#include <spdlog/cfg/env.h>
6#include <spdlog/cfg/argv.h>
7
11
12TEST_CASE("env", "[cfg]")
13{
14 spdlog::drop("l1");
15 auto l1 = spdlog::create<test_sink_st>("l1");
16#ifdef CATCH_PLATFORM_WINDOWS
17 _putenv_s("SPDLOG_LEVEL", "l1=warn");
18#else
19 setenv("SPDLOG_LEVEL", "l1=warn", 1);
20#endif
21 load_env_levels();
22 REQUIRE(l1->level() == spdlog::level::warn);
23 spdlog::set_default_logger(spdlog::create<test_sink_st>("cfg-default"));
25}
26
27TEST_CASE("argv1", "[cfg]")
28{
29 spdlog::drop("l1");
30 const char *argv[] = {"ignore", "SPDLOG_LEVEL=l1=warn"};
31 load_argv_levels(2, argv);
32 auto l1 = spdlog::create<spdlog::sinks::test_sink_st>("l1");
33 REQUIRE(l1->level() == spdlog::level::warn);
35}
36
37TEST_CASE("argv2", "[cfg]")
38{
39 spdlog::drop("l1");
40 const char *argv[] = {"ignore", "SPDLOG_LEVEL=l1=warn,trace"};
41 load_argv_levels(2, argv);
42 auto l1 = spdlog::create<test_sink_st>("l1");
43 REQUIRE(l1->level() == spdlog::level::warn);
45}
46
47TEST_CASE("argv3", "[cfg]")
48{
50
51 spdlog::drop("l1");
52 const char *argv[] = {"ignore", "SPDLOG_LEVEL=junk_name=warn"};
53 load_argv_levels(2, argv);
54 auto l1 = spdlog::create<test_sink_st>("l1");
55 REQUIRE(l1->level() == spdlog::level::trace);
57}
58
59TEST_CASE("argv4", "[cfg]")
60{
62 spdlog::drop("l1");
63 const char *argv[] = {"ignore", "SPDLOG_LEVEL=junk"};
64 load_argv_levels(2, argv);
65 auto l1 = spdlog::create<test_sink_st>("l1");
66 REQUIRE(l1->level() == spdlog::level::info);
67}
68
69TEST_CASE("argv5", "[cfg]")
70{
72 spdlog::drop("l1");
73 const char *argv[] = {"ignore", "ignore", "SPDLOG_LEVEL=l1=warn,trace"};
74 load_argv_levels(3, argv);
75 auto l1 = spdlog::create<test_sink_st>("l1");
76 REQUIRE(l1->level() == spdlog::level::warn);
79}
80
81TEST_CASE("argv6", "[cfg]")
82{
84 const char *argv[] = {""};
85 load_argv_levels(1, argv);
88}
89
90TEST_CASE("argv7", "[cfg]")
91{
93 const char *argv[] = {""};
94 load_argv_levels(0, argv);
97}
98
99TEST_CASE("level-not-set-test1", "[cfg]")
100{
101 spdlog::drop("l1");
102 const char *argv[] = {"ignore", ""};
103 load_argv_levels(2, argv);
104 auto l1 = spdlog::create<spdlog::sinks::test_sink_st>("l1");
105 l1->set_level(spdlog::level::trace);
106 REQUIRE(l1->level() == spdlog::level::trace);
108}
109
110TEST_CASE("level-not-set-test2", "[cfg]")
111{
112 spdlog::drop("l1");
113 spdlog::drop("l2");
114 const char *argv[] = {"ignore", "SPDLOG_LEVEL=l1=trace"};
115
116 auto l1 = spdlog::create<spdlog::sinks::test_sink_st>("l1");
117 l1->set_level(spdlog::level::warn);
118 auto l2 = spdlog::create<spdlog::sinks::test_sink_st>("l2");
119 l2->set_level(spdlog::level::warn);
120
121 load_argv_levels(2, argv);
122
123 REQUIRE(l1->level() == spdlog::level::trace);
124 REQUIRE(l2->level() == spdlog::level::warn);
126}
127
128TEST_CASE("level-not-set-test3", "[cfg]")
129{
130 spdlog::drop("l1");
131 spdlog::drop("l2");
132 const char *argv[] = {"ignore", "SPDLOG_LEVEL=l1=trace"};
133
134 load_argv_levels(2, argv);
135
136 auto l1 = spdlog::create<spdlog::sinks::test_sink_st>("l1");
137 auto l2 = spdlog::create<spdlog::sinks::test_sink_st>("l2");
138
139 REQUIRE(l1->level() == spdlog::level::trace);
140 REQUIRE(l2->level() == spdlog::level::info);
142}
143
144TEST_CASE("level-not-set-test4", "[cfg]")
145{
146 spdlog::drop("l1");
147 spdlog::drop("l2");
148 const char *argv[] = {"ignore", "SPDLOG_LEVEL=l1=trace,warn"};
149
150 load_argv_levels(2, argv);
151
152 auto l1 = spdlog::create<spdlog::sinks::test_sink_st>("l1");
153 auto l2 = spdlog::create<spdlog::sinks::test_sink_st>("l2");
154
155 REQUIRE(l1->level() == spdlog::level::trace);
156 REQUIRE(l2->level() == spdlog::level::warn);
158}
159
160TEST_CASE("level-not-set-test5", "[cfg]")
161{
162 spdlog::drop("l1");
163 spdlog::drop("l2");
164 const char *argv[] = {"ignore", "SPDLOG_LEVEL=l1=junk,warn"};
165
166 load_argv_levels(2, argv);
167
168 auto l1 = spdlog::create<spdlog::sinks::test_sink_st>("l1");
169 auto l2 = spdlog::create<spdlog::sinks::test_sink_st>("l2");
170
171 REQUIRE(l1->level() == spdlog::level::warn);
172 REQUIRE(l2->level() == spdlog::level::warn);
174}
175
176TEST_CASE("restore-to-default", "[cfg]")
177{
178 spdlog::drop("l1");
179 spdlog::drop("l2");
180 const char *argv[] = {"ignore", "SPDLOG_LEVEL=info"};
181 load_argv_levels(2, argv);
183}
#define TEST_CASE(...)
Definition catch.hpp:15119
#define REQUIRE(...)
Definition catch.hpp:15083
void load_argv_levels(int argc, const char **argv)
Definition argv.h:24
void load_env_levels()
Definition env.h:28
SPDLOG_INLINE void set_level(level::level_enum log_level)
Definition spdlog-inl.h:60
SPDLOG_INLINE std::shared_ptr< spdlog::logger > default_logger()
Definition spdlog-inl.h:110
SPDLOG_INLINE void drop(const std::string &name)
Definition spdlog-inl.h:90
SPDLOG_INLINE void set_default_logger(std::shared_ptr< spdlog::logger > default_logger)
Definition spdlog-inl.h:120