test: interface_bitcoin_cli.py: check specified wallet type availability

Currently the test performs the wallet-relevant parts if
_any_ wallet type support is compiled in, independently of
whether the test is run with legacy or descriptor wallet
specified. This leads to a failure if the test is started
with the `--legacy-wallet` parameter, but bitcoind is
compiled without BDB support.

Fix this by checking if the specified wallet type (BDB for
legacy wallet, SQLite for descriptor wallet) is available.
This commit is contained in:
Sebastian Falbesoner 2021-12-08 17:30:20 +01:00
parent 926fc2a0d4
commit b57bf25cfe

View File

@ -66,10 +66,16 @@ def cli_get_info_string_to_dict(cli_get_info_string):
class TestBitcoinCli(BitcoinTestFramework): class TestBitcoinCli(BitcoinTestFramework):
def is_specified_wallet_compiled(self):
if self.options.descriptors:
return self.is_sqlite_compiled()
else:
return self.is_bdb_compiled()
def set_test_params(self): def set_test_params(self):
self.setup_clean_chain = True self.setup_clean_chain = True
self.num_nodes = 1 self.num_nodes = 1
if self.is_wallet_compiled(): if self.is_specified_wallet_compiled():
self.requires_wallet = True self.requires_wallet = True
def skip_test_if_missing_module(self): def skip_test_if_missing_module(self):
@ -113,7 +119,7 @@ class TestBitcoinCli(BitcoinTestFramework):
assert_raises_process_error(1, "Invalid value for -color option. Valid values: always, auto, never.", self.nodes[0].cli('-getinfo', '-color=foo').send_cli) assert_raises_process_error(1, "Invalid value for -color option. Valid values: always, auto, never.", self.nodes[0].cli('-getinfo', '-color=foo').send_cli)
self.log.info("Test -getinfo returns expected network and blockchain info") self.log.info("Test -getinfo returns expected network and blockchain info")
if self.is_wallet_compiled(): if self.is_specified_wallet_compiled():
self.nodes[0].encryptwallet(password) self.nodes[0].encryptwallet(password)
cli_get_info_string = self.nodes[0].cli('-getinfo').send_cli() cli_get_info_string = self.nodes[0].cli('-getinfo').send_cli()
cli_get_info = cli_get_info_string_to_dict(cli_get_info_string) cli_get_info = cli_get_info_string_to_dict(cli_get_info_string)
@ -138,7 +144,7 @@ class TestBitcoinCli(BitcoinTestFramework):
cli_get_info = cli_get_info_string_to_dict(cli_get_info_string) cli_get_info = cli_get_info_string_to_dict(cli_get_info_string)
assert_equal(cli_get_info["Proxies"], "127.0.0.1:9050 (ipv4, ipv6, onion, cjdns), 127.0.0.1:7656 (i2p)") assert_equal(cli_get_info["Proxies"], "127.0.0.1:9050 (ipv4, ipv6, onion, cjdns), 127.0.0.1:7656 (i2p)")
if self.is_wallet_compiled(): if self.is_specified_wallet_compiled():
self.log.info("Test -getinfo and bitcoin-cli getwalletinfo return expected wallet info") self.log.info("Test -getinfo and bitcoin-cli getwalletinfo return expected wallet info")
# Explicitely set the output type in order to have constintent tx vsize / fees # Explicitely set the output type in order to have constintent tx vsize / fees
# for both legacy and descriptor wallets (disables the change address type detection algorithm) # for both legacy and descriptor wallets (disables the change address type detection algorithm)