#!/usr/bin/env python3 # Copyright (c) 2017 The Bitcoin Core developers # Copyright (c) 2019-2020 The Hush developers # Distributed under the GPLv3 software license, see the accompanying # file COPYING or https://www.gnu.org/licenses/gpl-3.0.en.html """Test wallet file location.""" import os from test_framework.util import start_node, stop_node, assert_start_raises_init_error from test_framework.test_framework import BitcoinTestFramework class WalletFileTest(BitcoinTestFramework): def set_test_params(self): self.num_nodes = 1 self.setup_clean_chain = True def run_test(self): # test default wallet location assert os.path.isfile(os.path.join(self.options.tmpdir, "node0", "regtest", "wallet.dat")) # test alternative wallet file name in datadir stop_node(self.nodes[0], 0) self.nodes[0] = start_node(0, self.options.tmpdir, ["-wallet=altwallet.dat"]) assert os.path.isfile(os.path.join(self.options.tmpdir, "node0", "regtest", "altwallet.dat")) # test wallet file outside datadir tempname = os.path.join(self.options.tmpdir, "outsidewallet.dat") stop_node(self.nodes[0], 0) self.nodes[0] = start_node(0, self.options.tmpdir, ["-wallet=%s" % tempname]) assert os.path.isfile(tempname) # test the case where absolute path does not exist assert not os.path.isdir("/this_directory_must_not_exist") invalidpath = os.path.join("/this_directory_must_not_exist/", "foo.dat") stop_node(self.nodes[0], 0) assert_start_raises_init_error(0, "-wallet=%s" % invalidpath, "Error: Absolute path %s does not exist") # relative path does not exist invalidpath = os.path.join("wallet", "foo.dat") assert_start_raises_init_error(0, "-wallet=%s" % invalidpath, "Error: Relative path %s does not exist") # create dir and retry os.mkdir(os.path.join(self.options.tmpdir, "node0", "regtest", "wallet")) self.nodes[0] = start_node(0, self.options.tmpdir, ["-wallet=%s" % invalidpath]) if __name__ == '__main__': WalletFileTest().main()