Merge #15301: tests: When testing with --usecli, unify RPC arg to cli arg conversion and handle dicts and lists
2e023419c5
tests: unify RPC argument to cli argument conversion and handle dicts and lists (Andrew Chow)
Pull request description:
When running tests with --usecli, unify the conversion from argument objects to strings using a new function arg_to_cli(). This fixes boolean arguments when using named arguments.
Also use json.dumps() to get the string values for arguments that are dicts and lists so that bitcoind's JSON parser does not become confused.
Tree-SHA512: 472bef3cd78410a8552fd342b1852bcd7c57721cfa9176b26bacda6b0791cc0b3758561a529c4117a7428242f98bb7d5482b2a2dcd06bea0ef2b15ae26183405
This commit is contained in:
commit
cb35f1d305
1 changed files with 10 additions and 2 deletions
|
@ -402,6 +402,14 @@ class TestNodeCLIAttr:
|
||||||
def get_request(self, *args, **kwargs):
|
def get_request(self, *args, **kwargs):
|
||||||
return lambda: self(*args, **kwargs)
|
return lambda: self(*args, **kwargs)
|
||||||
|
|
||||||
|
def arg_to_cli(arg):
|
||||||
|
if isinstance(arg, bool):
|
||||||
|
return str(arg).lower()
|
||||||
|
elif isinstance(arg, dict) or isinstance(arg, list):
|
||||||
|
return json.dumps(arg)
|
||||||
|
else:
|
||||||
|
return str(arg)
|
||||||
|
|
||||||
class TestNodeCLI():
|
class TestNodeCLI():
|
||||||
"""Interface to bitcoin-cli for an individual node"""
|
"""Interface to bitcoin-cli for an individual node"""
|
||||||
|
|
||||||
|
@ -433,8 +441,8 @@ class TestNodeCLI():
|
||||||
|
|
||||||
def send_cli(self, command=None, *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).lower() if type(arg) is bool else str(arg) for arg in args]
|
pos_args = [arg_to_cli(arg) for arg in args]
|
||||||
named_args = [str(key) + "=" + str(value) for (key, value) in kwargs.items()]
|
named_args = [str(key) + "=" + arg_to_cli(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.options
|
p_args = [self.binary, "-datadir=" + self.datadir] + self.options
|
||||||
if named_args:
|
if named_args:
|
||||||
|
|
Loading…
Reference in a new issue