[test] Add support for custom arguments to TestNodeCLI

This commit is contained in:
João Barbosa 2017-09-06 17:07:21 +01:00 committed by Alexander Block
parent d446cc57aa
commit 6245ce95e1

View File

@ -158,8 +158,16 @@ class TestNodeCLI():
"""Interface to bitcoin-cli for an individual node""" """Interface to bitcoin-cli for an individual node"""
def __init__(self, binary, datadir): def __init__(self, binary, datadir):
self.args = []
self.binary = binary self.binary = binary
self.datadir = datadir self.datadir = datadir
self.input = None
def __call__(self, *args, input=None):
# TestNodeCLI is callable with bitcoin-cli command-line args
self.args = [str(arg) for arg in args]
self.input = input
return self
def __getattr__(self, command): def __getattr__(self, command):
def dispatcher(*args, **kwargs): def dispatcher(*args, **kwargs):
@ -172,9 +180,9 @@ class TestNodeCLI():
pos_args = [str(arg) for arg in args] pos_args = [str(arg) for arg in args]
named_args = [str(key) + "=" + str(value) for (key, value) in kwargs.items()] named_args = [str(key) + "=" + str(value) for (key, value) in kwargs.items()]
assert not (pos_args and named_args), "Cannot use positional arguments and named arguments in the same bitcoin-cli call" assert not (pos_args and named_args), "Cannot use positional arguments and named arguments in the same bitcoin-cli call"
p_args = [self.binary, "-datadir=" + self.datadir] p_args = [self.binary, "-datadir=" + self.datadir] + self.args
if named_args: if named_args:
p_args += ["-named"] p_args += ["-named"]
p_args += [command] + pos_args + named_args p_args += [command] + pos_args + named_args
cli_output = subprocess.check_output(p_args, universal_newlines=True) cli_output = subprocess.check_output(p_args, input=self.input, universal_newlines=True)
return json.loads(cli_output, parse_float=decimal.Decimal) return json.loads(cli_output, parse_float=decimal.Decimal)