Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge bitcoin#31541: qa: Use
sys.executable
when invoking other Pyt…
…hon scripts d38ade7 qa: Use `sys.executable` when invoking other Python scripts (Hennadii Stepanov) Pull request description: This PR fixes the `rpc_signer.py` and `wallet_signer.py` functional tests on systems where `python3` is not available in the `PATH`, causing the shebang `#!/usr/bin/env python3` to fail. Here are logs on NetBSD 10.0: - without this PR: ``` $ python3.12 ./build/test/functional/test_runner.py rpc_signer.py wallet_signer.py Temporary test directory at /tmp/test_runner_₿_🏃_20241219_160538 Remaining jobs: [rpc_signer.py, wallet_signer.py --descriptors] 1/2 - rpc_signer.py failed, Duration: 1 s stdout: 2024-12-19T16:05:40.012000Z TestFramework (INFO): PRNG seed is: 1833166631173850775 2024-12-19T16:05:40.012000Z TestFramework (INFO): Initializing test directory /tmp/test_runner_₿_🏃_20241219_160538/rpc_signer_1 2024-12-19T16:05:40.754000Z TestFramework (ERROR): Assertion failed Traceback (most recent call last): File "/home/hebasto/dev/bitcoin/test/functional/test_framework/util.py", line 160, in try_rpc fun(*args, **kwds) File "/home/hebasto/dev/bitcoin/test/functional/test_framework/coverage.py", line 50, in __call__ return_val = self.auth_service_proxy_instance.__call__(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/hebasto/dev/bitcoin/test/functional/test_framework/authproxy.py", line 146, in __call__ raise JSONRPCException(response['error'], status) test_framework.authproxy.JSONRPCException: RunCommandParseJSON error: process(/home/hebasto/dev/bitcoin/test/functional/mocks/signer.py enumerate) returned 127: env: python3: No such file or directory (-1) During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/home/hebasto/dev/bitcoin/test/functional/test_framework/test_framework.py", line 135, in main self.run_test() File "/home/hebasto/dev/bitcoin/build/test/functional/rpc_signer.py", line 72, in run_test assert_raises_rpc_error(-1, 'fingerprint not found', File "/home/hebasto/dev/bitcoin/test/functional/test_framework/util.py", line 151, in assert_raises_rpc_error assert try_rpc(code, message, fun, *args, **kwds), "No exception raised" ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/hebasto/dev/bitcoin/test/functional/test_framework/util.py", line 166, in try_rpc raise AssertionError( AssertionError: Expected substring not found in error message: substring: 'fingerprint not found' error message: 'RunCommandParseJSON error: process(/home/hebasto/dev/bitcoin/test/functional/mocks/signer.py enumerate) returned 127: env: python3: No such file or directory '. 2024-12-19T16:05:40.756000Z TestFramework (INFO): Stopping nodes 2024-12-19T16:05:40.873000Z TestFramework (WARNING): Not cleaning up dir /tmp/test_runner_₿_🏃_20241219_160538/rpc_signer_1 2024-12-19T16:05:40.873000Z TestFramework (ERROR): Test failed. Test logging available at /tmp/test_runner_₿_🏃_20241219_160538/rpc_signer_1/test_framework.log 2024-12-19T16:05:40.873000Z TestFramework (ERROR): 2024-12-19T16:05:40.873000Z TestFramework (ERROR): Hint: Call /home/hebasto/dev/bitcoin/test/functional/combine_logs.py '/tmp/test_runner_₿_🏃_20241219_160538/rpc_signer_1' to consolidate all logs 2024-12-19T16:05:40.873000Z TestFramework (ERROR): 2024-12-19T16:05:40.873000Z TestFramework (ERROR): If this failure happened unexpectedly or intermittently, please file a bug and provide a link or upload of the combined log. 2024-12-19T16:05:40.873000Z TestFramework (ERROR): https://github.com/bitcoin/bitcoin/issues 2024-12-19T16:05:40.873000Z TestFramework (ERROR): stderr: Remaining jobs: [wallet_signer.py --descriptors] 2/2 - wallet_signer.py --descriptors failed, Duration: 1 s stdout: 2024-12-19T16:05:40.014000Z TestFramework (INFO): PRNG seed is: 7530764367977090686 2024-12-19T16:05:40.014000Z TestFramework (INFO): Initializing test directory /tmp/test_runner_₿_🏃_20241219_160538/wallet_signer_0 2024-12-19T16:05:40.526000Z TestFramework (ERROR): JSONRPC error Traceback (most recent call last): File "/home/hebasto/dev/bitcoin/test/functional/test_framework/test_framework.py", line 135, in main self.run_test() File "/home/hebasto/dev/bitcoin/build/test/functional/wallet_signer.py", line 66, in run_test self.test_valid_signer() File "/home/hebasto/dev/bitcoin/build/test/functional/wallet_signer.py", line 83, in test_valid_signer self.nodes[1].createwallet(wallet_name='hww', disable_private_keys=True, descriptors=True, external_signer=True) File "/home/hebasto/dev/bitcoin/test/functional/test_framework/test_node.py", line 935, in createwallet return self.__getattr__('createwallet')(wallet_name, disable_private_keys, blank, passphrase, avoid_reuse, descriptors, load_on_startup, external_signer) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/hebasto/dev/bitcoin/test/functional/test_framework/coverage.py", line 50, in __call__ return_val = self.auth_service_proxy_instance.__call__(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/hebasto/dev/bitcoin/test/functional/test_framework/authproxy.py", line 146, in __call__ raise JSONRPCException(response['error'], status) test_framework.authproxy.JSONRPCException: RunCommandParseJSON error: process(/home/hebasto/dev/bitcoin/test/functional/mocks/signer.py enumerate) returned 127: env: python3: No such file or directory (-1) 2024-12-19T16:05:40.528000Z TestFramework (INFO): Stopping nodes 2024-12-19T16:05:40.645000Z TestFramework (WARNING): Not cleaning up dir /tmp/test_runner_₿_🏃_20241219_160538/wallet_signer_0 2024-12-19T16:05:40.646000Z TestFramework (ERROR): Test failed. Test logging available at /tmp/test_runner_₿_🏃_20241219_160538/wallet_signer_0/test_framework.log 2024-12-19T16:05:40.646000Z TestFramework (ERROR): 2024-12-19T16:05:40.646000Z TestFramework (ERROR): Hint: Call /home/hebasto/dev/bitcoin/test/functional/combine_logs.py '/tmp/test_runner_₿_🏃_20241219_160538/wallet_signer_0' to consolidate all logs 2024-12-19T16:05:40.646000Z TestFramework (ERROR): 2024-12-19T16:05:40.646000Z TestFramework (ERROR): If this failure happened unexpectedly or intermittently, please file a bug and provide a link or upload of the combined log. 2024-12-19T16:05:40.646000Z TestFramework (ERROR): https://github.com/bitcoin/bitcoin/issues 2024-12-19T16:05:40.646000Z TestFramework (ERROR): stderr: TEST | STATUS | DURATION rpc_signer.py | ✖ Failed | 1 s wallet_signer.py --descriptors | ✖ Failed | 1 s ALL | ✖ Failed | 2 s (accumulated) Runtime: 1 s ``` - with this PR: ``` $ python3.12 ./build/test/functional/test_runner.py rpc_signer.py wallet_signer.py Temporary test directory at /tmp/test_runner_₿_🏃_20241219_160011 Remaining jobs: [rpc_signer.py, wallet_signer.py --descriptors] 1/2 - rpc_signer.py passed, Duration: 2 s Remaining jobs: [wallet_signer.py --descriptors] 2/2 - wallet_signer.py --descriptors passed, Duration: 3 s TEST | STATUS | DURATION rpc_signer.py | ✓ Passed | 2 s wallet_signer.py --descriptors | ✓ Passed | 3 s ALL | ✓ Passed | 5 s (accumulated) Runtime: 3 s ``` ACKs for top commit: maflcko: lgtm ACK d38ade7 stickies-v: ACK d38ade7 . I have a minor concern about `sys.executable` not being guaranteed to return a valid Python path, but this patch seems good enough as is so no blocker. Tree-SHA512: 91fe0abc0b7e2b599c5562f8b225ba60f94c5bd6baa77d8df532155ef4d3ef6c6a862cee7f4a7f565ed4bb3251adcda813b4a4f79be1aa6a4ffdfda8b4e53415
- Loading branch information