From dda961cec5fef318c0b043a09367d14daa87f089 Mon Sep 17 00:00:00 2001 From: Hennadii Stepanov <32963518+hebasto@users.noreply.github.com> Date: Fri, 5 May 2023 13:35:06 +0100 Subject: [PATCH 1/2] test, refactor: Add `set_binary_paths` function This change factors out the repeated code into a new `set_binary_paths` function. --- .../test_framework/test_framework.py | 35 +++++++++---------- 1 file changed, 17 insertions(+), 18 deletions(-) diff --git a/test/functional/test_framework/test_framework.py b/test/functional/test_framework/test_framework.py index 66a23b443c2..46a5cfa70c4 100755 --- a/test/functional/test_framework/test_framework.py +++ b/test/functional/test_framework/test_framework.py @@ -228,6 +228,22 @@ class BitcoinTestFramework(metaclass=BitcoinTestMetaClass): PortSeed.n = self.options.port_seed + def set_binary_paths(self): + """Update self.options with the paths of all binaries from environment variables or their default values""" + + binaries = { + "bitcoind": ("bitcoind", "BITCOIND"), + "bitcoin-cli": ("bitcoincli", "BITCOINCLI"), + "bitcoin-util": ("bitcoinutil", "BITCOINUTIL"), + } + for binary, [attribute_name, env_variable_name] in binaries.items(): + default_filename = os.path.join( + self.config["environment"]["BUILDDIR"], + "src", + binary + self.config["environment"]["EXEEXT"], + ) + setattr(self.options, attribute_name, os.getenv(env_variable_name, default=default_filename)) + def setup(self): """Call this method to start up the test framework object with options set.""" @@ -237,24 +253,7 @@ class BitcoinTestFramework(metaclass=BitcoinTestMetaClass): config = self.config - fname_bitcoind = os.path.join( - config["environment"]["BUILDDIR"], - "src", - "bitcoind" + config["environment"]["EXEEXT"], - ) - fname_bitcoincli = os.path.join( - config["environment"]["BUILDDIR"], - "src", - "bitcoin-cli" + config["environment"]["EXEEXT"], - ) - fname_bitcoinutil = os.path.join( - config["environment"]["BUILDDIR"], - "src", - "bitcoin-util" + config["environment"]["EXEEXT"], - ) - self.options.bitcoind = os.getenv("BITCOIND", default=fname_bitcoind) - self.options.bitcoincli = os.getenv("BITCOINCLI", default=fname_bitcoincli) - self.options.bitcoinutil = os.getenv("BITCOINUTIL", default=fname_bitcoinutil) + self.set_binary_paths() os.environ['PATH'] = os.pathsep.join([ os.path.join(config['environment']['BUILDDIR'], 'src'), From f6d7636be4eb0b19878428906dd5e394df7d07a2 Mon Sep 17 00:00:00 2001 From: Hennadii Stepanov <32963518+hebasto@users.noreply.github.com> Date: Fri, 5 May 2023 13:35:30 +0100 Subject: [PATCH 2/2] test: Treat `bitcoin-wallet` binary in the same way as others This change makes the `bitcoin-wallet` binary path customizable in the same way how it can be done now with other ones, including `bitcoind`, `bitcoin-cli` and `bitcoin-util`. --- test/functional/test_framework/test_framework.py | 1 + test/functional/tool_wallet.py | 3 +-- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/test/functional/test_framework/test_framework.py b/test/functional/test_framework/test_framework.py index 46a5cfa70c4..d4dc90a517a 100755 --- a/test/functional/test_framework/test_framework.py +++ b/test/functional/test_framework/test_framework.py @@ -235,6 +235,7 @@ class BitcoinTestFramework(metaclass=BitcoinTestMetaClass): "bitcoind": ("bitcoind", "BITCOIND"), "bitcoin-cli": ("bitcoincli", "BITCOINCLI"), "bitcoin-util": ("bitcoinutil", "BITCOINUTIL"), + "bitcoin-wallet": ("bitcoinwallet", "BITCOINWALLET"), } for binary, [attribute_name, env_variable_name] in binaries.items(): default_filename = os.path.join( diff --git a/test/functional/tool_wallet.py b/test/functional/tool_wallet.py index a888f93b03e..95999649b43 100755 --- a/test/functional/tool_wallet.py +++ b/test/functional/tool_wallet.py @@ -32,12 +32,11 @@ class ToolWalletTest(BitcoinTestFramework): self.skip_if_no_wallet_tool() def bitcoin_wallet_process(self, *args): - binary = self.config["environment"]["BUILDDIR"] + '/src/bitcoin-wallet' + self.config["environment"]["EXEEXT"] default_args = ['-datadir={}'.format(self.nodes[0].datadir), '-chain=%s' % self.chain] if not self.options.descriptors and 'create' in args: default_args.append('-legacy') - return subprocess.Popen([binary] + default_args + list(args), stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True) + return subprocess.Popen([self.options.bitcoinwallet] + default_args + list(args), stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True) def assert_raises_tool_error(self, error, *args): p = self.bitcoin_wallet_process(*args)