|
19 | 19 | import shutil
|
20 | 20 |
|
21 | 21 | from test_framework.test_framework import BitcoinTestFramework, SkipTest
|
| 22 | +from test_framework.descriptors import descsum_create |
22 | 23 |
|
23 | 24 | from test_framework.util import (
|
24 | 25 | assert_equal,
|
@@ -240,6 +241,28 @@ def run_test(self):
|
240 | 241 | self.stop_node(self.num_nodes - 1)
|
241 | 242 | node_v17.assert_start_raises_init_error(["-wallet=w3_v18"], "Error: Error loading w3_v18: Wallet requires newer version of Bitcoin Core")
|
242 | 243 | node_v17.assert_start_raises_init_error(["-wallet=w3"], "Error: Error loading w3: Wallet requires newer version of Bitcoin Core")
|
| 244 | + self.start_node(self.num_nodes - 1) |
| 245 | + |
| 246 | + self.log.info("Test wallet upgrade path...") |
| 247 | + # u1: regular wallet, created with v0.17 |
| 248 | + node_v17.createwallet(wallet_name="u1_v17") |
| 249 | + wallet = node_v17.get_wallet_rpc("u1_v17") |
| 250 | + address = wallet.getnewaddress("bech32") |
| 251 | + info = wallet.getaddressinfo(address) |
| 252 | + hdkeypath = info["hdkeypath"] |
| 253 | + pubkey = info["pubkey"] |
| 254 | + |
| 255 | + # Copy the wallet to the last Bitcoin Core version and open it: |
| 256 | + node_v17.unloadwallet("u1_v17") |
| 257 | + shutil.copytree( |
| 258 | + os.path.join(node_v17_wallets_dir, "u1_v17"), |
| 259 | + os.path.join(node_master_wallets_dir, "u1_v17") |
| 260 | + ) |
| 261 | + node_master.loadwallet("u1_v17") |
| 262 | + wallet = node_master.get_wallet_rpc("u1_v17") |
| 263 | + info = wallet.getaddressinfo(address) |
| 264 | + descriptor = "wpkh([" + info["hdmasterfingerprint"] + hdkeypath[1:] + "]" + pubkey + ")" |
| 265 | + assert_equal(info["desc"], descsum_create(descriptor)) |
243 | 266 |
|
244 | 267 | if __name__ == '__main__':
|
245 | 268 | BackwardsCompatibilityTest().main()
|
0 commit comments