[test] functional: set cwd of nodes to tmpdir

This commit is contained in:
Sjors Provoost 2019-02-15 12:54:29 +01:00
parent c576979b78
commit e3e1a5631e
No known key found for this signature in database
GPG key ID: 57FF9BDBCC301009
2 changed files with 9 additions and 3 deletions

View file

@ -318,6 +318,7 @@ class BitcoinTestFramework(metaclass=BitcoinTestMetaClass):
bitcoin_cli=self.options.bitcoincli, bitcoin_cli=self.options.bitcoincli,
mocktime=self.mocktime, mocktime=self.mocktime,
coverage_dir=self.options.coveragedir, coverage_dir=self.options.coveragedir,
cwd=self.options.tmpdir,
extra_conf=extra_confs[i], extra_conf=extra_confs[i],
extra_args=extra_args[i], extra_args=extra_args[i],
use_cli=self.options.usecli, use_cli=self.options.usecli,
@ -469,6 +470,7 @@ class BitcoinTestFramework(metaclass=BitcoinTestMetaClass):
bitcoin_cli=self.options.bitcoincli, bitcoin_cli=self.options.bitcoincli,
mocktime=self.mocktime, mocktime=self.mocktime,
coverage_dir=None, coverage_dir=None,
cwd=self.options.tmpdir,
)) ))
self.nodes[i].args = args self.nodes[i].args = args
self.start_node(i) self.start_node(i)

View file

@ -61,7 +61,7 @@ class TestNode():
To make things easier for the test writer, any unrecognised messages will To make things easier for the test writer, any unrecognised messages will
be dispatched to the RPC connection.""" be dispatched to the RPC connection."""
def __init__(self, i, datadir, *, rpchost, timewait, bitcoind, bitcoin_cli, mocktime, coverage_dir, extra_conf=None, extra_args=None, use_cli=False, start_perf=False): def __init__(self, i, datadir, *, rpchost, timewait, bitcoind, bitcoin_cli, mocktime, coverage_dir, cwd, extra_conf=None, extra_args=None, use_cli=False, start_perf=False):
""" """
Kwargs: Kwargs:
start_perf (bool): If True, begin profiling the node with `perf` as soon as start_perf (bool): If True, begin profiling the node with `perf` as soon as
@ -76,6 +76,7 @@ class TestNode():
self.rpc_timeout = timewait self.rpc_timeout = timewait
self.binary = bitcoind self.binary = bitcoind
self.coverage_dir = coverage_dir self.coverage_dir = coverage_dir
self.cwd = cwd
if extra_conf is not None: if extra_conf is not None:
append_config(datadir, extra_conf) append_config(datadir, extra_conf)
# Most callers will just need to add extra args to the standard list below. # Most callers will just need to add extra args to the standard list below.
@ -171,7 +172,7 @@ class TestNode():
assert self.rpc_connected and self.rpc is not None, self._node_msg("Error: no RPC connection") assert self.rpc_connected and self.rpc is not None, self._node_msg("Error: no RPC connection")
return getattr(self.rpc, name) return getattr(self.rpc, name)
def start(self, extra_args=None, *, stdout=None, stderr=None, **kwargs): def start(self, extra_args=None, *, cwd=None, stdout=None, stderr=None, **kwargs):
"""Start the node.""" """Start the node."""
if extra_args is None: if extra_args is None:
extra_args = self.extra_args extra_args = self.extra_args
@ -184,6 +185,9 @@ class TestNode():
self.stderr = stderr self.stderr = stderr
self.stdout = stdout self.stdout = stdout
if cwd is None:
cwd = self.cwd
# Delete any existing cookie file -- if such a file exists (eg due to # Delete any existing cookie file -- if such a file exists (eg due to
# unclean shutdown), it will get overwritten anyway by bitcoind, and # unclean shutdown), it will get overwritten anyway by bitcoind, and
# potentially interfere with our attempt to authenticate # potentially interfere with our attempt to authenticate
@ -192,7 +196,7 @@ class TestNode():
# add environment variable LIBC_FATAL_STDERR_=1 so that libc errors are written to stderr and not the terminal # add environment variable LIBC_FATAL_STDERR_=1 so that libc errors are written to stderr and not the terminal
subp_env = dict(os.environ, LIBC_FATAL_STDERR_="1") subp_env = dict(os.environ, LIBC_FATAL_STDERR_="1")
self.process = subprocess.Popen(self.args + extra_args, env=subp_env, stdout=stdout, stderr=stderr, **kwargs) self.process = subprocess.Popen(self.args + extra_args, env=subp_env, stdout=stdout, stderr=stderr, cwd=cwd, **kwargs)
self.running = True self.running = True
self.log.debug("bitcoind started, waiting for RPC to come up") self.log.debug("bitcoind started, waiting for RPC to come up")