be8ab7d082
This change should make it easier for users to make complete backups of wallets because they can now just back up the specified `-wallet=<path>` path directly, instead of having to back up the specified path as well as the transaction log directory (for incompletely flushed wallets). Another advantage of this change is that if two wallets are located in the same directory, they will now use their own BerkeleyDB environments instead using a shared environment. Using a shared environment makes it difficult to manage and back up wallets separately because transaction log files will contain a mix of data from all wallets in the environment.
49 lines
2.3 KiB
Python
Executable file
49 lines
2.3 KiB
Python
Executable file
#!/usr/bin/env python3
|
|
# Copyright (c) 2017 The Bitcoin Core developers
|
|
# Distributed under the MIT software license, see the accompanying
|
|
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
|
"""Test various command line arguments and configuration file parameters."""
|
|
|
|
import os
|
|
|
|
from test_framework.test_framework import BitcoinTestFramework
|
|
from test_framework.util import get_datadir_path
|
|
|
|
class ConfArgsTest(BitcoinTestFramework):
|
|
def set_test_params(self):
|
|
self.setup_clean_chain = True
|
|
self.num_nodes = 1
|
|
|
|
def run_test(self):
|
|
self.stop_node(0)
|
|
# Remove the -datadir argument so it doesn't override the config file
|
|
self.nodes[0].args = [arg for arg in self.nodes[0].args if not arg.startswith("-datadir")]
|
|
|
|
default_data_dir = get_datadir_path(self.options.tmpdir, 0)
|
|
new_data_dir = os.path.join(default_data_dir, 'newdatadir')
|
|
new_data_dir_2 = os.path.join(default_data_dir, 'newdatadir2')
|
|
|
|
# Check that using -datadir argument on non-existent directory fails
|
|
self.nodes[0].datadir = new_data_dir
|
|
self.assert_start_raises_init_error(0, ['-datadir='+new_data_dir], 'Error: Specified data directory "' + new_data_dir + '" does not exist.')
|
|
|
|
# Check that using non-existent datadir in conf file fails
|
|
conf_file = os.path.join(default_data_dir, "bitcoin.conf")
|
|
with open(conf_file, 'a', encoding='utf8') as f:
|
|
f.write("datadir=" + new_data_dir + "\n")
|
|
self.assert_start_raises_init_error(0, ['-conf='+conf_file], 'Error reading configuration file: specified data directory "' + new_data_dir + '" does not exist.')
|
|
|
|
# Create the directory and ensure the config file now works
|
|
os.mkdir(new_data_dir)
|
|
self.start_node(0, ['-conf='+conf_file, '-wallet=w1'])
|
|
self.stop_node(0)
|
|
assert os.path.exists(os.path.join(new_data_dir, 'regtest', 'wallets', 'w1'))
|
|
|
|
# Ensure command line argument overrides datadir in conf
|
|
os.mkdir(new_data_dir_2)
|
|
self.nodes[0].datadir = new_data_dir_2
|
|
self.start_node(0, ['-datadir='+new_data_dir_2, '-conf='+conf_file, '-wallet=w2'])
|
|
assert os.path.exists(os.path.join(new_data_dir_2, 'regtest', 'wallets', 'w2'))
|
|
|
|
if __name__ == '__main__':
|
|
ConfArgsTest().main()
|