mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-04-08 03:59:18 +02:00
settings: add auto-generated warning msg for editing the file manually
Hopefully, refraining users from modifying the file unless they are certain about the potential consequences. Co-authored-by: Ryan Ofsky <ryan@ofsky.org>
This commit is contained in:
parent
966f5de99a
commit
e9014042a6
@ -4,6 +4,10 @@
|
||||
|
||||
#include <common/settings.h>
|
||||
|
||||
#if defined(HAVE_CONFIG_H)
|
||||
#include <config/bitcoin-config.h>
|
||||
#endif
|
||||
|
||||
#include <tinyformat.h>
|
||||
#include <univalue.h>
|
||||
#include <util/fs.h>
|
||||
@ -116,6 +120,13 @@ bool WriteSettings(const fs::path& path,
|
||||
std::vector<std::string>& errors)
|
||||
{
|
||||
SettingsValue out(SettingsValue::VOBJ);
|
||||
// Add auto-generated warning comment only if it does not exist
|
||||
if (!values.contains("_warning_")) {
|
||||
out.pushKV("_warning_", strprintf("This file is automatically generated and updated by %s. Please do not edit this file while the node "
|
||||
"is running, as any changes might be ignored or overwritten.",
|
||||
PACKAGE_NAME));
|
||||
}
|
||||
// Push settings values
|
||||
for (const auto& value : values) {
|
||||
out.pushKVEnd(value.first, value.second);
|
||||
}
|
||||
|
@ -61,7 +61,11 @@ void OptionTests::migrateSettings()
|
||||
QVERIFY(!settings.contains("addrSeparateProxyTor"));
|
||||
|
||||
std::ifstream file(gArgs.GetDataDirNet() / "settings.json");
|
||||
std::string default_warning = strprintf("This file is automatically generated and updated by %s. Please do not edit this file while the node "
|
||||
"is running, as any changes might be ignored or overwritten.",
|
||||
PACKAGE_NAME);
|
||||
QCOMPARE(std::string(std::istreambuf_iterator<char>(file), std::istreambuf_iterator<char>()).c_str(), "{\n"
|
||||
" \"_warning_\": \""+ default_warning+"\",\n"
|
||||
" \"dbcache\": \"600\",\n"
|
||||
" \"listen\": false,\n"
|
||||
" \"onion\": \"onion:234\",\n"
|
||||
|
@ -23,10 +23,11 @@ class SettingsTest(BitcoinTestFramework):
|
||||
settings = node.chain_path / "settings.json"
|
||||
conf = node.datadir_path / "bitcoin.conf"
|
||||
|
||||
# Assert empty settings file was created
|
||||
# Assert default settings file was created
|
||||
self.stop_node(0)
|
||||
default_settings = {"_warning_": "This file is automatically generated and updated by Bitcoin Core. Please do not edit this file while the node is running, as any changes might be ignored or overwritten."}
|
||||
with settings.open() as fp:
|
||||
assert_equal(json.load(fp), {})
|
||||
assert_equal(json.load(fp), default_settings)
|
||||
|
||||
# Assert settings are parsed and logged
|
||||
with settings.open("w") as fp:
|
||||
@ -48,7 +49,7 @@ class SettingsTest(BitcoinTestFramework):
|
||||
|
||||
# Assert settings are unchanged after shutdown
|
||||
with settings.open() as fp:
|
||||
assert_equal(json.load(fp), {"string": "string", "num": 5, "bool": True, "null": None, "list": [6, 7]})
|
||||
assert_equal(json.load(fp), {**default_settings, **{"string": "string", "num": 5, "bool": True, "null": None, "list": [6, 7]}})
|
||||
|
||||
# Test invalid json
|
||||
with settings.open("w") as fp:
|
||||
|
Loading…
x
Reference in New Issue
Block a user