[log] Initialize Logger in C++ test framework

Log functions call global_logger->log_vprintf_() without a null check.
The test main.cpp skips the generated setup() (which calls
Logger::pre_setup()), so set up a static Logger before running tests.
This commit is contained in:
J. Nick Koston
2026-03-05 22:00:06 -10:00
parent 8d36935083
commit 92a37d4cb0
+8
View File
@@ -1,5 +1,7 @@
#include <gtest/gtest.h>
#include "esphome/components/logger/logger.h"
/*
This special main.cpp replaces the default one.
It will run all the Google Tests found in all compiled cpp files and then exit with the result
@@ -18,6 +20,12 @@ void original_setup() {
}
void setup() {
// Log functions call global_logger->log_vprintf_() without a null check,
// so we must set up a Logger before any test that triggers logging.
static esphome::logger::Logger test_logger(0);
test_logger.set_log_level(ESPHOME_LOG_LEVEL);
test_logger.pre_setup();
::testing::InitGoogleTest();
int exit_code = RUN_ALL_TESTS();
exit(exit_code);