Merge #12089: qa: Make TestNodeCLI command optional in send_cli

fae7b14a04 qa: Make TestNodeCLI command optional in send_cli (MarcoFalke)
ffffb10a9f qa: Rename cli.args to cli.options (MarcoFalke)

Pull request description:

  Makes the `command` optional, since there are valid bitcoin-cli calls that have no `command`:

  * `bitcoin-cli -?`
  * `bitcoin-cli -getinfo`
  * ...

  Also, rename self.args to self.options, since that is the name in the `bitcoin-cli -help` documentation.

Tree-SHA512: f49c06024e78423301d70782946d47c0fb97a26876afba0a1f71ed329f5d7124aee4c2df520c7af74079bf9937851902f7be9c54abecc28dc29274584804d46c
This commit is contained in:
MarcoFalke 2018-01-24 08:49:33 -05:00 committed by Pasta
parent 5bb47a6d91
commit 01d3f009c5
No known key found for this signature in database
GPG Key ID: 52527BEDABE87984
2 changed files with 10 additions and 8 deletions

View File

@ -39,7 +39,7 @@ class TestBitcoinCli(BitcoinTestFramework):
assert_raises_process_error(1, "-getinfo takes no arguments", self.nodes[0].cli('-getinfo').help) assert_raises_process_error(1, "-getinfo takes no arguments", self.nodes[0].cli('-getinfo').help)
self.log.info("Compare responses from `dash-cli -getinfo` and the RPCs data is retrieved from.") self.log.info("Compare responses from `dash-cli -getinfo` and the RPCs data is retrieved from.")
cli_get_info = self.nodes[0].cli().send_cli('-getinfo') cli_get_info = self.nodes[0].cli('-getinfo').send_cli()
wallet_info = self.nodes[0].getwalletinfo() wallet_info = self.nodes[0].getwalletinfo()
network_info = self.nodes[0].getnetworkinfo() network_info = self.nodes[0].getnetworkinfo()
blockchain_info = self.nodes[0].getblockchaininfo() blockchain_info = self.nodes[0].getblockchaininfo()

View File

@ -234,16 +234,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.options = []
self.binary = binary self.binary = binary
self.datadir = datadir self.datadir = datadir
self.input = None self.input = None
self.log = logging.getLogger('TestFramework.bitcoincli') self.log = logging.getLogger('TestFramework.bitcoincli')
def __call__(self, *args, input=None): def __call__(self, *options, input=None):
# TestNodeCLI is callable with bitcoin-cli command-line args # TestNodeCLI is callable with bitcoin-cli command-line options
cli = TestNodeCLI(self.binary, self.datadir) cli = TestNodeCLI(self.binary, self.datadir)
cli.args = [str(arg) for arg in args] cli.options = [str(o) for o in options]
cli.input = input cli.input = input
return cli return cli
@ -259,16 +259,18 @@ class TestNodeCLI():
results.append(dict(error=e)) results.append(dict(error=e))
return results return results
def send_cli(self, command, *args, **kwargs): def send_cli(self, command=None, *args, **kwargs):
"""Run bitcoin-cli command. Deserializes returned string as python object.""" """Run bitcoin-cli command. Deserializes returned string as python object."""
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] + self.args p_args = [self.binary, "-datadir=" + self.datadir] + self.options
if named_args: if named_args:
p_args += ["-named"] p_args += ["-named"]
p_args += [command] + pos_args + named_args if command is not None:
p_args += [command]
p_args += pos_args + named_args
self.log.debug("Running bitcoin-cli command: %s" % command) self.log.debug("Running bitcoin-cli command: %s" % command)
process = subprocess.Popen(p_args, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE, universal_newlines=True) process = subprocess.Popen(p_args, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE, universal_newlines=True)
cli_stdout, cli_stderr = process.communicate(input=self.input) cli_stdout, cli_stderr = process.communicate(input=self.input)