aboutsummaryrefslogtreecommitdiff
path: root/src/libutil/tests/config.cc
diff options
context:
space:
mode:
authorAndreas Rammhold <andreas@rammhold.de>2020-05-27 14:41:01 +0200
committerAndreas Rammhold <andreas@rammhold.de>2020-05-27 17:47:18 +0200
commit9df3d8ccd7a3130faccb73933d0c196a81d605eb (patch)
tree28398868ef4d04c0a0db6207a2f4dfaf159b2654 /src/libutil/tests/config.cc
parente1b8c64c04b40694418de87e3e0d118cf0677bfc (diff)
tests/config.cc: add tests for Config::applyConfig
Diffstat (limited to 'src/libutil/tests/config.cc')
-rw-r--r--src/libutil/tests/config.cc60
1 files changed, 60 insertions, 0 deletions
diff --git a/src/libutil/tests/config.cc b/src/libutil/tests/config.cc
index b0be24d5e..74c59fd31 100644
--- a/src/libutil/tests/config.cc
+++ b/src/libutil/tests/config.cc
@@ -201,4 +201,64 @@ namespace nix {
config.reapplyUnknownSettings();
ASSERT_EQ(setting.get(), "unknownvalue");
}
+
+ TEST(Config, applyConfigEmpty) {
+ Config config;
+ std::map<std::string, Config::SettingInfo> settings;
+ config.applyConfig("");
+ config.getSettings(settings);
+ ASSERT_TRUE(settings.empty());
+ }
+
+ TEST(Config, applyConfigEmptyWithComment) {
+ Config config;
+ std::map<std::string, Config::SettingInfo> settings;
+ config.applyConfig("# just a comment");
+ config.getSettings(settings);
+ ASSERT_TRUE(settings.empty());
+ }
+
+ TEST(Config, applyConfigAssignment) {
+ Config config;
+ std::map<std::string, Config::SettingInfo> settings;
+ Setting<std::string> setting{&config, "", "name-of-the-setting", "description"};
+ config.applyConfig(
+ "name-of-the-setting = value-from-file #useful comment\n"
+ "# name-of-the-setting = foo\n"
+ );
+ config.getSettings(settings);
+ ASSERT_FALSE(settings.empty());
+ ASSERT_EQ(settings["name-of-the-setting"].value, "value-from-file");
+ }
+
+ TEST(Config, applyConfigWithReassignedSetting) {
+ Config config;
+ std::map<std::string, Config::SettingInfo> settings;
+ Setting<std::string> setting{&config, "", "name-of-the-setting", "description"};
+ config.applyConfig(
+ "name-of-the-setting = first-value\n"
+ "name-of-the-setting = second-value\n"
+ );
+ config.getSettings(settings);
+ ASSERT_FALSE(settings.empty());
+ ASSERT_EQ(settings["name-of-the-setting"].value, "second-value");
+ }
+
+ TEST(Config, applyConfigFailsOnMissingIncludes) {
+ Config config;
+ std::map<std::string, Config::SettingInfo> settings;
+ Setting<std::string> setting{&config, "", "name-of-the-setting", "description"};
+
+ ASSERT_THROW(config.applyConfig(
+ "name-of-the-setting = value-from-file\n"
+ "# name-of-the-setting = foo\n"
+ "include /nix/store/does/not/exist.nix"
+ ), Error);
+ }
+
+ TEST(Config, applyConfigInvalidThrows) {
+ Config config;
+ ASSERT_THROW(config.applyConfig("value == key"), UsageError);
+ ASSERT_THROW(config.applyConfig("value "), UsageError);
+ }
}