diff options
author | John Newbery <john@johnnewbery.com> | 2018-02-07 09:36:13 -0500 |
---|---|---|
committer | MarcoFalke <falke.marco@gmail.com> | 2018-03-18 12:29:02 -0400 |
commit | 0ec08a672dce3f619e46d0c7455e95a13dc5c4e2 (patch) | |
tree | e14adca17c192046a2ca0ae6393254702f241124 /test/functional/test_framework/test_node.py | |
parent | af20f9b1d485582b8c8aa8294bac4f2c540246d2 (diff) | |
download | bitcoin-0ec08a672dce3f619e46d0c7455e95a13dc5c4e2.tar.xz |
[Tests] Move assert_start_raises_init_error method to TestNode
Diffstat (limited to 'test/functional/test_framework/test_node.py')
-rwxr-xr-x | test/functional/test_framework/test_node.py | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/test/functional/test_framework/test_node.py b/test/functional/test_framework/test_node.py index 86e44e4c97..dbdaf67201 100755 --- a/test/functional/test_framework/test_node.py +++ b/test/functional/test_framework/test_node.py @@ -12,6 +12,7 @@ import logging import os import re import subprocess +import tempfile import time from .authproxy import JSONRPCException @@ -165,6 +166,33 @@ class TestNode(): def wait_until_stopped(self, timeout=BITCOIND_PROC_WAIT_TIMEOUT): wait_until(self.is_node_stopped, timeout=timeout) + def assert_start_raises_init_error(self, extra_args=None, expected_msg=None, *args, **kwargs): + """Attempt to start the node and expect it to raise an error. + + Will throw if bitcoind starts without an error. + Will throw if an expected_msg is provided and it does not appear in bitcoind's stdout.""" + with tempfile.SpooledTemporaryFile(max_size=2**16) as log_stderr: + try: + self.start(extra_args, stderr=log_stderr, *args, **kwargs) + self.wait_for_rpc_connection() + self.stop_node() + self.wait_util_stopped() + except Exception as e: + assert 'bitcoind exited' in str(e) # node must have shutdown + self.running = False + self.process = None + if expected_msg is not None: + log_stderr.seek(0) + stderr = log_stderr.read().decode('utf-8') + if expected_msg not in stderr: + raise AssertionError("Expected error \"" + expected_msg + "\" not found in:\n" + stderr) + else: + if expected_msg is None: + assert_msg = "bitcoind should have exited with an error" + else: + assert_msg = "bitcoind should have exited with expected error " + expected_msg + raise AssertionError(assert_msg) + def node_encrypt_wallet(self, passphrase): """"Encrypts the wallet. |