mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-02-08 10:31:50 -05:00
test: Refactor v19 addmultisigaddress test to be distinct
This specific test is distinct from the rest of the backwards compatibility tests as it is checking a specific failure.
This commit is contained in:
parent
53f35d02cb
commit
71c03aeff7
1 changed files with 40 additions and 33 deletions
|
@ -90,10 +90,47 @@ class BackwardsCompatibilityTest(BitcoinTestFramework):
|
||||||
node_major, _, _ = self.split_version(node)
|
node_major, _, _ = self.split_version(node)
|
||||||
return node_major >= major
|
return node_major >= major
|
||||||
|
|
||||||
|
def test_v19_addmultisigaddress(self):
|
||||||
|
if not self.is_bdb_compiled():
|
||||||
|
return
|
||||||
|
# Specific test for addmultisigaddress using v19
|
||||||
|
# See #18075
|
||||||
|
self.log.info("Testing 0.19 addmultisigaddress case (#18075)")
|
||||||
|
node_master = self.nodes[1]
|
||||||
|
node_v19 = self.nodes[self.num_nodes - 4]
|
||||||
|
node_v19.rpc.createwallet(wallet_name="w1_v19")
|
||||||
|
wallet = node_v19.get_wallet_rpc("w1_v19")
|
||||||
|
info = wallet.getwalletinfo()
|
||||||
|
assert info['private_keys_enabled']
|
||||||
|
assert info['keypoolsize'] > 0
|
||||||
|
# Use addmultisigaddress (see #18075)
|
||||||
|
address_18075 = wallet.rpc.addmultisigaddress(1, ["0296b538e853519c726a2c91e61ec11600ae1390813a627c66fb8be7947be63c52", "037211a824f55b505228e4c3d5194c1fcfaa15a456abdf37f9b9d97a4040afc073"], "", "legacy")["address"]
|
||||||
|
assert wallet.getaddressinfo(address_18075)["solvable"]
|
||||||
|
node_v19.unloadwallet("w1_v19")
|
||||||
|
|
||||||
|
# Copy the 0.19 wallet to the last Bitcoin Core version and open it:
|
||||||
|
shutil.copytree(
|
||||||
|
os.path.join(node_v19.wallets_path, "w1_v19"),
|
||||||
|
os.path.join(node_master.wallets_path, "w1_v19")
|
||||||
|
)
|
||||||
|
node_master.loadwallet("w1_v19")
|
||||||
|
wallet = node_master.get_wallet_rpc("w1_v19")
|
||||||
|
assert wallet.getaddressinfo(address_18075)["solvable"]
|
||||||
|
|
||||||
|
# Now copy that same wallet back to 0.19 to make sure no automatic upgrade breaks it
|
||||||
|
node_master.unloadwallet("w1_v19")
|
||||||
|
shutil.rmtree(os.path.join(node_v19.wallets_path, "w1_v19"))
|
||||||
|
shutil.copytree(
|
||||||
|
os.path.join(node_master.wallets_path, "w1_v19"),
|
||||||
|
os.path.join(node_v19.wallets_path, "w1_v19")
|
||||||
|
)
|
||||||
|
node_v19.loadwallet("w1_v19")
|
||||||
|
wallet = node_v19.get_wallet_rpc("w1_v19")
|
||||||
|
assert wallet.getaddressinfo(address_18075)["solvable"]
|
||||||
|
|
||||||
def run_test(self):
|
def run_test(self):
|
||||||
node_miner = self.nodes[0]
|
node_miner = self.nodes[0]
|
||||||
node_master = self.nodes[1]
|
node_master = self.nodes[1]
|
||||||
node_v19 = self.nodes[self.num_nodes - 4]
|
|
||||||
node_v17 = self.nodes[self.num_nodes - 2]
|
node_v17 = self.nodes[self.num_nodes - 2]
|
||||||
node_v16 = self.nodes[self.num_nodes - 1]
|
node_v16 = self.nodes[self.num_nodes - 1]
|
||||||
|
|
||||||
|
@ -133,17 +170,6 @@ class BackwardsCompatibilityTest(BitcoinTestFramework):
|
||||||
# Abandon transaction, but don't confirm
|
# Abandon transaction, but don't confirm
|
||||||
node_master.abandontransaction(tx3_id)
|
node_master.abandontransaction(tx3_id)
|
||||||
|
|
||||||
# w1_v19: regular wallet, created with v0.19
|
|
||||||
node_v19.rpc.createwallet(wallet_name="w1_v19")
|
|
||||||
wallet = node_v19.get_wallet_rpc("w1_v19")
|
|
||||||
info = wallet.getwalletinfo()
|
|
||||||
assert info['private_keys_enabled']
|
|
||||||
assert info['keypoolsize'] > 0
|
|
||||||
# Use addmultisigaddress (see #18075)
|
|
||||||
address_18075 = wallet.rpc.addmultisigaddress(1, ["0296b538e853519c726a2c91e61ec11600ae1390813a627c66fb8be7947be63c52", "037211a824f55b505228e4c3d5194c1fcfaa15a456abdf37f9b9d97a4040afc073"], "", "legacy")["address"]
|
|
||||||
assert wallet.getaddressinfo(address_18075)["solvable"]
|
|
||||||
node_v19.unloadwallet("w1_v19")
|
|
||||||
|
|
||||||
# w2: wallet with private keys disabled, created on master: update this
|
# w2: wallet with private keys disabled, created on master: update this
|
||||||
# test when default wallets private keys disabled can no longer be
|
# test when default wallets private keys disabled can no longer be
|
||||||
# opened by older versions.
|
# opened by older versions.
|
||||||
|
@ -163,7 +189,6 @@ class BackwardsCompatibilityTest(BitcoinTestFramework):
|
||||||
|
|
||||||
# Unload wallets and copy to older nodes:
|
# Unload wallets and copy to older nodes:
|
||||||
node_master_wallets_dir = node_master.wallets_path
|
node_master_wallets_dir = node_master.wallets_path
|
||||||
node_v19_wallets_dir = node_v19.wallets_path
|
|
||||||
node_v17_wallets_dir = node_v17.wallets_path
|
node_v17_wallets_dir = node_v17.wallets_path
|
||||||
node_v16_wallets_dir = node_v16.wallets_path
|
node_v16_wallets_dir = node_v16.wallets_path
|
||||||
node_master.unloadwallet("w1")
|
node_master.unloadwallet("w1")
|
||||||
|
@ -181,6 +206,8 @@ class BackwardsCompatibilityTest(BitcoinTestFramework):
|
||||||
else:
|
else:
|
||||||
shutil.copytree(source, dest)
|
shutil.copytree(source, dest)
|
||||||
|
|
||||||
|
self.test_v19_addmultisigaddress()
|
||||||
|
|
||||||
if not self.options.descriptors:
|
if not self.options.descriptors:
|
||||||
# Descriptor wallets break compatibility, only run this test for legacy wallet
|
# Descriptor wallets break compatibility, only run this test for legacy wallet
|
||||||
# Load modern wallet with older nodes
|
# Load modern wallet with older nodes
|
||||||
|
@ -322,25 +349,5 @@ class BackwardsCompatibilityTest(BitcoinTestFramework):
|
||||||
info = wallet.getaddressinfo(address)
|
info = wallet.getaddressinfo(address)
|
||||||
assert_equal(info, v17_info)
|
assert_equal(info, v17_info)
|
||||||
|
|
||||||
# Copy the 0.19 wallet to the last Bitcoin Core version and open it:
|
|
||||||
shutil.copytree(
|
|
||||||
os.path.join(node_v19_wallets_dir, "w1_v19"),
|
|
||||||
os.path.join(node_master_wallets_dir, "w1_v19")
|
|
||||||
)
|
|
||||||
node_master.loadwallet("w1_v19")
|
|
||||||
wallet = node_master.get_wallet_rpc("w1_v19")
|
|
||||||
assert wallet.getaddressinfo(address_18075)["solvable"]
|
|
||||||
|
|
||||||
# Now copy that same wallet back to 0.19 to make sure no automatic upgrade breaks it
|
|
||||||
node_master.unloadwallet("w1_v19")
|
|
||||||
shutil.rmtree(os.path.join(node_v19_wallets_dir, "w1_v19"))
|
|
||||||
shutil.copytree(
|
|
||||||
os.path.join(node_master_wallets_dir, "w1_v19"),
|
|
||||||
os.path.join(node_v19_wallets_dir, "w1_v19")
|
|
||||||
)
|
|
||||||
node_v19.loadwallet("w1_v19")
|
|
||||||
wallet = node_v19.get_wallet_rpc("w1_v19")
|
|
||||||
assert wallet.getaddressinfo(address_18075)["solvable"]
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
BackwardsCompatibilityTest().main()
|
BackwardsCompatibilityTest().main()
|
||||||
|
|
Loading…
Add table
Reference in a new issue