|
7 | 7 |
|
8 | 8 | #include "includes.h" |
9 | 9 | #include "spdlog/details/os.h" |
10 | | -#include "spdlog/sinks/ostream_sink.h" |
11 | 10 | #include "spdlog/sinks/async_sink.h" |
| 11 | +#include "spdlog/sinks/ostream_sink.h" |
12 | 12 | #include "test_sink.h" |
13 | 13 |
|
14 | 14 | template <class T> |
@@ -79,18 +79,27 @@ TEST_CASE("clone-logger", "[clone]") { |
79 | 79 | auto test_sink = std::make_shared<test_sink_mt>(); |
80 | 80 | auto logger = std::make_shared<spdlog::logger>("orig", test_sink); |
81 | 81 | logger->set_pattern("%v"); |
| 82 | + bool error_handled = false; |
| 83 | + logger->set_error_handler([&error_handled](const std::string&) { error_handled = true; }); |
82 | 84 | auto cloned = logger->clone("clone"); |
83 | 85 |
|
84 | 86 | REQUIRE(cloned->name() == "clone"); |
85 | 87 | REQUIRE(logger->sinks() == cloned->sinks()); |
86 | 88 | REQUIRE(logger->log_level() == cloned->log_level()); |
87 | 89 | REQUIRE(logger->flush_level() == cloned->flush_level()); |
| 90 | + |
88 | 91 | logger->info("Some message 1"); |
89 | 92 | cloned->info("Some message 2"); |
90 | 93 |
|
91 | 94 | REQUIRE(test_sink->lines().size() == 2); |
92 | 95 | REQUIRE(test_sink->lines()[0] == "Some message 1"); |
93 | 96 | REQUIRE(test_sink->lines()[1] == "Some message 2"); |
| 97 | + |
| 98 | + // check that cloned custom error handler was indeed cloned |
| 99 | + test_sink->set_exception(std::runtime_error("Some error")); |
| 100 | + REQUIRE(error_handled == false); |
| 101 | + cloned->error("Some error"); |
| 102 | + REQUIRE(error_handled == true); |
94 | 103 | } |
95 | 104 |
|
96 | 105 | TEST_CASE("clone async", "[clone]") { |
|
0 commit comments