diff options
author | John Newbery <john@johnnewbery.com> | 2018-02-07 10:51:13 -0500 |
---|---|---|
committer | John Newbery <john@johnnewbery.com> | 2018-05-09 10:39:31 -0400 |
commit | beee49ba1f17937539aa4b543d5b28a9d76c0f4a (patch) | |
tree | aa446e7a681dd3d971f1ccc8ccf69899d2f8b86e /test | |
parent | e5036715c8f56170e1674f8aa4eb4b54565bb451 (diff) |
[tests] Allow stderr to be tested against specified string
Allow bitcoind's stderr to be tested against a specified string on
shutdown.
Diffstat (limited to 'test')
-rwxr-xr-x | test/functional/feature_includeconf.py | 17 | ||||
-rwxr-xr-x | test/functional/test_framework/test_framework.py | 4 | ||||
-rwxr-xr-x | test/functional/test_framework/test_node.py | 9 |
3 files changed, 17 insertions, 13 deletions
diff --git a/test/functional/feature_includeconf.py b/test/functional/feature_includeconf.py index d3f1be6c3a..1ead2fcb02 100755 --- a/test/functional/feature_includeconf.py +++ b/test/functional/feature_includeconf.py @@ -15,9 +15,8 @@ Verify that: file. """ import os -import tempfile -from test_framework.test_framework import BitcoinTestFramework, assert_equal +from test_framework.test_framework import BitcoinTestFramework class IncludeConfTest(BitcoinTestFramework): def set_test_params(self): @@ -44,20 +43,18 @@ class IncludeConfTest(BitcoinTestFramework): self.log.info("-includeconf cannot be used as command-line arg. subversion should still end with 'main; relative)/'") self.stop_node(0) - with tempfile.SpooledTemporaryFile(max_size=2**16) as log_stderr: - self.start_node(0, extra_args=["-includeconf=relative2.conf"], stderr=log_stderr) - subversion = self.nodes[0].getnetworkinfo()["subversion"] - assert subversion.endswith("main; relative)/") - log_stderr.seek(0) - stderr = log_stderr.read().decode('utf-8').strip() - assert_equal(stderr, 'warning: -includeconf cannot be used from commandline; ignoring -includeconf=relative2.conf') + self.start_node(0, extra_args=["-includeconf=relative2.conf"]) + + subversion = self.nodes[0].getnetworkinfo()["subversion"] + assert subversion.endswith("main; relative)/") + self.stop_node(0, expected_stderr="warning: -includeconf cannot be used from commandline; ignoring -includeconf=relative2.conf") self.log.info("-includeconf cannot be used recursively. subversion should end with 'main; relative)/'") with open(os.path.join(self.options.tmpdir, "node0", "relative.conf"), "a", encoding="utf8") as f: f.write("includeconf=relative2.conf\n") - self.restart_node(0) + self.start_node(0) subversion = self.nodes[0].getnetworkinfo()["subversion"] assert subversion.endswith("main; relative)/") diff --git a/test/functional/test_framework/test_framework.py b/test/functional/test_framework/test_framework.py index bb850740ce..b842e6ef4e 100755 --- a/test/functional/test_framework/test_framework.py +++ b/test/functional/test_framework/test_framework.py @@ -289,9 +289,9 @@ class BitcoinTestFramework(metaclass=BitcoinTestMetaClass): for node in self.nodes: coverage.write_all_rpc_commands(self.options.coveragedir, node.rpc) - def stop_node(self, i): + def stop_node(self, i, expected_stderr=''): """Stop a bitcoind test node""" - self.nodes[i].stop_node() + self.nodes[i].stop_node(expected_stderr) self.nodes[i].wait_until_stopped() def stop_nodes(self): diff --git a/test/functional/test_framework/test_node.py b/test/functional/test_framework/test_node.py index 440e4586b7..eac6057de6 100755 --- a/test/functional/test_framework/test_node.py +++ b/test/functional/test_framework/test_node.py @@ -188,7 +188,7 @@ class TestNode(): wallet_path = "wallet/%s" % wallet_name return self.rpc / wallet_path - def stop_node(self): + def stop_node(self, expected_stderr=''): """Stop the node.""" if not self.running: return @@ -197,6 +197,13 @@ class TestNode(): self.stop() except http.client.CannotSendRequest: self.log.exception("Unable to stop node.") + + # Check that stderr is as expected + self.stderr.seek(0) + stderr = self.stderr.read().decode('utf-8').strip() + if stderr != expected_stderr: + raise AssertionError("Unexpected stderr {} != {}".format(stderr, expected_stderr)) + del self.p2ps[:] def is_node_stopped(self): |