mirror of
https://github.com/ElementsProject/elements.git
synced 2026-08-15 12:51:00 +02:00
Merge fb52023ee6 into merged_master (Bitcoin PR bitcoin/bitcoin#30684)
This commit is contained in:
commit
ffc2d3af4b
3 changed files with 40 additions and 0 deletions
|
|
@ -77,6 +77,11 @@ bool VerifyWallets(WalletContext& context)
|
|||
std::set<fs::path> wallet_paths;
|
||||
|
||||
for (const auto& wallet : chain.getSettingsList("wallet")) {
|
||||
if (!wallet.isStr()) {
|
||||
chain.initError(_("Invalid value detected for '-wallet' or '-nowallet'. "
|
||||
"'-wallet' requires a string value, while '-nowallet' accepts only '1' to disable all wallets"));
|
||||
return false;
|
||||
}
|
||||
const auto& wallet_file = wallet.get_str();
|
||||
const fs::path path = fsbridge::AbsPathJoin(GetWalletDir(), fs::PathFromString(wallet_file));
|
||||
|
||||
|
|
@ -110,6 +115,11 @@ bool LoadWallets(WalletContext& context)
|
|||
try {
|
||||
std::set<fs::path> wallet_paths;
|
||||
for (const auto& wallet : chain.getSettingsList("wallet")) {
|
||||
if (!wallet.isStr()) {
|
||||
chain.initError(_("Invalid value detected for '-wallet' or '-nowallet'. "
|
||||
"'-wallet' requires a string value, while '-nowallet' accepts only '1' to disable all wallets"));
|
||||
return false;
|
||||
}
|
||||
const auto& name = wallet.get_str();
|
||||
if (!wallet_paths.insert(fs::PathFromString(name)).second) {
|
||||
continue;
|
||||
|
|
|
|||
|
|
@ -154,6 +154,13 @@ class ConfArgsTest(BitcoinTestFramework):
|
|||
expected_msg='Error: Error parsing command line arguments: Can not set -proxy with no value. Please specify value with -proxy=value.',
|
||||
extra_args=['-proxy'],
|
||||
)
|
||||
# Provide a value different from 1 to the -wallet negated option
|
||||
if self.is_wallet_compiled():
|
||||
for value in [0, 'not_a_boolean']:
|
||||
self.nodes[0].assert_start_raises_init_error(
|
||||
expected_msg="Error: Invalid value detected for '-wallet' or '-nowallet'. '-wallet' requires a string value, while '-nowallet' accepts only '1' to disable all wallets",
|
||||
extra_args=[f'-nowallet={value}'],
|
||||
)
|
||||
|
||||
def test_log_buffer(self):
|
||||
self.stop_node(0)
|
||||
|
|
|
|||
|
|
@ -13,11 +13,32 @@ from test_framework.util import assert_equal
|
|||
|
||||
|
||||
class SettingsTest(BitcoinTestFramework):
|
||||
def add_options(self, parser):
|
||||
self.add_wallet_options(parser)
|
||||
|
||||
def set_test_params(self):
|
||||
self.setup_clean_chain = True
|
||||
self.num_nodes = 1
|
||||
self.wallet_names = []
|
||||
|
||||
def test_wallet_settings(self, settings_path):
|
||||
if not self.is_wallet_compiled():
|
||||
return
|
||||
|
||||
self.log.info("Testing wallet settings..")
|
||||
node = self.nodes[0]
|
||||
# Create wallet to use it during tests
|
||||
self.start_node(0)
|
||||
node.createwallet(wallet_name='w1')
|
||||
self.stop_node(0)
|
||||
|
||||
# Verify wallet settings can only be strings. Either names or paths. Not booleans, nums nor anything else.
|
||||
for wallets_data in [[10], [True], [[]], [{}], ["w1", 10], ["w1", False]]:
|
||||
with settings_path.open("w") as fp:
|
||||
json.dump({"wallet": wallets_data}, fp)
|
||||
node.assert_start_raises_init_error(expected_msg="Error: Invalid value detected for '-wallet' or '-nowallet'. '-wallet' requires a string value, while '-nowallet' accepts only '1' to disable all wallets",
|
||||
extra_args=[f'-settings={settings_path}'])
|
||||
|
||||
def run_test(self):
|
||||
node, = self.nodes
|
||||
settings = node.chain_path / "settings.json"
|
||||
|
|
@ -86,6 +107,8 @@ class SettingsTest(BitcoinTestFramework):
|
|||
self.start_node(0, extra_args=[f"-settings={altsettings}"])
|
||||
self.stop_node(0)
|
||||
|
||||
self.test_wallet_settings(settings)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
SettingsTest(__file__).main()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue