aboutsummaryrefslogtreecommitdiff
path: root/src/test/settings_tests.cpp
diff options
context:
space:
mode:
authorRussell Yanofsky <russ@yanofsky.org>2019-11-13 15:23:06 -0500
committerRussell Yanofsky <russ@yanofsky.org>2019-11-13 15:23:06 -0500
commite9fd366044e271632dc0e4f96e1c14f8e87213ae (patch)
tree58801c53deeef9119dbba18ac765d967637e7bc2 /src/test/settings_tests.cpp
parentcba2710220d76bbe790b04088839cbbd410436de (diff)
refactor: Remove null setting check in GetSetting()
Also rename the "result_complete" variable in GetSettingsList() to "done" to be more consistent with GetSetting(). This change doesn't affect current behavior but could be useful in the future to support dynamically changing settings at runtime and adding new settings sources, because it lets high priority sources reset settings back to default (see test). By removing a special case for null, this change also helps merge code treat settings values more like black boxes, and interfere less with settings parsing and retrieval.
Diffstat (limited to 'src/test/settings_tests.cpp')
-rw-r--r--src/test/settings_tests.cpp13
1 files changed, 13 insertions, 0 deletions
diff --git a/src/test/settings_tests.cpp b/src/test/settings_tests.cpp
index b0ee76ea6b..7e30fbcf68 100644
--- a/src/test/settings_tests.cpp
+++ b/src/test/settings_tests.cpp
@@ -45,6 +45,19 @@ BOOST_AUTO_TEST_CASE(Simple)
CheckValues(settings2, R"("val2")", R"(["val2","val3"])");
}
+// Confirm that a high priority setting overrides a lower priority setting even
+// if the high priority setting is null. This behavior is useful for a high
+// priority setting source to be able to effectively reset any setting back to
+// its default value.
+BOOST_AUTO_TEST_CASE(NullOverride)
+{
+ util::Settings settings;
+ settings.command_line_options["name"].push_back("value");
+ BOOST_CHECK_EQUAL(R"("value")", GetSetting(settings, "section", "name", false, false).write().c_str());
+ settings.forced_settings["name"] = {};
+ BOOST_CHECK_EQUAL(R"(null)", GetSetting(settings, "section", "name", false, false).write().c_str());
+}
+
// Test different ways settings can be merged, and verify results. This test can
// be used to confirm that updates to settings code don't change behavior
// unintentionally.