diff options
author | João Barbosa <joao.paulo.barbosa@gmail.com> | 2017-09-06 16:35:57 +0100 |
---|---|---|
committer | MarcoFalke <falke.marco@gmail.com> | 2017-10-03 19:10:05 +0200 |
commit | e38211f5e8900ee9027c671d7c655958e4dbe8e7 (patch) | |
tree | 8c8269263a6b54105bd9997f5539fa7a81539a95 /test/functional | |
parent | e0bfd28de28efb1ffa84e89d76c144824dae987f (diff) | |
download | bitcoin-e38211f5e8900ee9027c671d7c655958e4dbe8e7.tar.xz |
[test] Add assert_raises_process_error to assert process errors
Github-Pull: #11125
Rebased-From: 232e3e8471edb346c09f906c996b2f350cabc72a
Diffstat (limited to 'test/functional')
-rw-r--r-- | test/functional/test_framework/util.py | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/test/functional/test_framework/util.py b/test/functional/test_framework/util.py index a5bc495dfa..b2d8199d12 100644 --- a/test/functional/test_framework/util.py +++ b/test/functional/test_framework/util.py @@ -12,6 +12,7 @@ import logging import os import random import re +from subprocess import CalledProcessError import time from . import coverage @@ -57,6 +58,30 @@ def assert_raises_message(exc, message, fun, *args, **kwds): else: raise AssertionError("No exception raised") +def assert_raises_process_error(returncode, output, fun, *args, **kwds): + """Execute a process and asserts the process return code and output. + + Calls function `fun` with arguments `args` and `kwds`. Catches a CalledProcessError + and verifies that the return code and output are as expected. Throws AssertionError if + no CalledProcessError was raised or if the return code and output are not as expected. + + Args: + returncode (int): the process return code. + output (string): [a substring of] the process output. + fun (function): the function to call. This should execute a process. + args*: positional arguments for the function. + kwds**: named arguments for the function. + """ + try: + fun(*args, **kwds) + except CalledProcessError as e: + if returncode != e.returncode: + raise AssertionError("Unexpected returncode %i" % e.returncode) + if output not in e.output: + raise AssertionError("Expected substring not found:" + e.output) + else: + raise AssertionError("No exception raised") + def assert_raises_jsonrpc(code, message, fun, *args, **kwds): """Run an RPC and verify that a specific JSONRPC exception code and message is raised. |