From: Joel Rosdahl Date: Fri, 15 May 2020 17:30:26 +0000 (+0200) Subject: Add unit test for config key tables consistency X-Git-Tag: v4.0~448 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e5c5ee2ec7e2c1308a54382afe18a779c3c317cf;p=thirdparty%2Fccache.git Add unit test for config key tables consistency --- diff --git a/src/Config.cpp b/src/Config.cpp index 78b4c72e1..da87c3d95 100644 --- a/src/Config.cpp +++ b/src/Config.cpp @@ -832,3 +832,16 @@ Config::set_item(const std::string& key, m_origins.emplace(key, origin); } + +void +Config::check_key_tables_consistency() +{ + for (const auto& item : k_env_variable_table) { + if (k_config_key_table.find(item.second) == k_config_key_table.end()) { + throw Error(fmt::format( + "env var {} mapped to {} which is missing from k_config_key_table", + item.first, + item.second)); + } + } +} diff --git a/src/Config.hpp b/src/Config.hpp index 3c6d87723..cde10497c 100644 --- a/src/Config.hpp +++ b/src/Config.hpp @@ -115,6 +115,9 @@ public: const std::string& key, const std::string& value); + // Called from unit tests. + static void check_key_tables_consistency(); + private: std::string m_primary_config_path; std::string m_secondary_config_path; diff --git a/unittest/test_Config.cpp b/unittest/test_Config.cpp index 35fe58c84..7772ecd51 100644 --- a/unittest/test_Config.cpp +++ b/unittest/test_Config.cpp @@ -474,5 +474,7 @@ TEST_CASE("Config::visit_items") } } -// TODO Test that values in k_env_variable_table map to keys in -// k_config_item_table.; +TEST_CASE("Check key tables consistency") +{ + CHECK_NOTHROW(Config::check_key_tables_consistency()); +}