diff --git a/src/webfused/config/factory.c b/src/webfused/config/factory.c index 58cb8dc..32837a9 100644 --- a/src/webfused/config/factory.c +++ b/src/webfused/config/factory.c @@ -84,8 +84,16 @@ wfd_config_load_file( if (CONFIG_TRUE == rc) { result = wfd_config_load(&config); - config_destroy(&config); } + else + { + WFD_ERROR("failed to load config: %s: %d: %s", + config_error_file(&config), + config_error_line(&config), + config_error_text(&config)); + } + config_destroy(&config); + return result; } @@ -102,8 +110,15 @@ wfd_config_load_string( if (CONFIG_TRUE == rc) { result = wfd_config_load(&config); - config_destroy(&config); } + else + { + WFD_ERROR("failed to load config: %d: %s", + config_error_line(&config), + config_error_text(&config)); + } + config_destroy(&config); + return result; } diff --git a/test/test_config.cc b/test/test_config.cc index eb012bd..49e8de4 100644 --- a/test/test_config.cc +++ b/test/test_config.cc @@ -31,6 +31,18 @@ TEST(config, minimal_config) wfd_config_dispose(config); } +TEST(config, invalid_config) +{ + MockLogger logger; + EXPECT_CALL(logger, log(WFD_LOGLEVEL_ERROR, _, _)).Times(1); + EXPECT_CALL(logger, onclose()).Times(1); + + char const syntax_error[] = "version.major = 1\n"; + + struct wfd_config * config = wfd_config_load_string(syntax_error); + ASSERT_EQ(nullptr, config); +} + TEST(config, invalid_major_version_too_low) { MockLogger logger;