1 | |
2 | #include "includes.h" |
3 | #include "test_sink.h" |
4 | |
5 | #include <spdlog/cfg/env.h> |
6 | #include <spdlog/cfg/argv.h> |
7 | |
8 | using spdlog::cfg::load_argv_levels; |
9 | using spdlog::cfg::load_env_levels; |
10 | using spdlog::sinks::test_sink_st; |
11 | |
12 | TEST_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" )); |
24 | REQUIRE(spdlog::default_logger()->level() == spdlog::level::info); |
25 | } |
26 | |
27 | TEST_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); |
34 | REQUIRE(spdlog::default_logger()->level() == spdlog::level::info); |
35 | } |
36 | |
37 | TEST_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); |
44 | REQUIRE(spdlog::default_logger()->level() == spdlog::level::trace); |
45 | } |
46 | |
47 | TEST_CASE("argv3" , "[cfg]" ) |
48 | { |
49 | spdlog::set_level(spdlog::level::trace); |
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); |
56 | REQUIRE(spdlog::default_logger()->level() == spdlog::level::trace); |
57 | } |
58 | |
59 | TEST_CASE("argv4" , "[cfg]" ) |
60 | { |
61 | spdlog::set_level(spdlog::level::info); |
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 | |
69 | TEST_CASE("argv5" , "[cfg]" ) |
70 | { |
71 | spdlog::set_level(spdlog::level::info); |
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); |
77 | REQUIRE(spdlog::default_logger()->level() == spdlog::level::trace); |
78 | spdlog::set_level(spdlog::level::info); |
79 | } |
80 | |
81 | TEST_CASE("argv6" , "[cfg]" ) |
82 | { |
83 | spdlog::set_level(spdlog::level::err); |
84 | const char *argv[] = {"" }; |
85 | load_argv_levels(1, argv); |
86 | REQUIRE(spdlog::default_logger()->level() == spdlog::level::err); |
87 | spdlog::set_level(spdlog::level::info); |
88 | } |
89 | |
90 | TEST_CASE("argv7" , "[cfg]" ) |
91 | { |
92 | spdlog::set_level(spdlog::level::err); |
93 | const char *argv[] = {"" }; |
94 | load_argv_levels(0, argv); |
95 | REQUIRE(spdlog::default_logger()->level() == spdlog::level::err); |
96 | spdlog::set_level(spdlog::level::info); |
97 | } |
98 | |
99 | TEST_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); |
107 | REQUIRE(spdlog::default_logger()->level() == spdlog::level::info); |
108 | } |
109 | |
110 | TEST_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); |
125 | REQUIRE(spdlog::default_logger()->level() == spdlog::level::info); |
126 | } |
127 | |
128 | TEST_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); |
141 | REQUIRE(spdlog::default_logger()->level() == spdlog::level::info); |
142 | } |
143 | |
144 | TEST_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); |
157 | REQUIRE(spdlog::default_logger()->level() == spdlog::level::warn); |
158 | } |
159 | |
160 | TEST_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); |
173 | REQUIRE(spdlog::default_logger()->level() == spdlog::level::warn); |
174 | } |
175 | |
176 | TEST_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); |
182 | REQUIRE(spdlog::default_logger()->level() == spdlog::level::info); |
183 | } |
184 | |