diff options
| author | João Barbosa <[email protected]> | 2017-09-06 16:35:57 +0100 |
|---|---|---|
| committer | João Barbosa <[email protected]> | 2017-09-07 00:35:28 +0100 |
| commit | 232e3e8471edb346c09f906c996b2f350cabc72a (patch) | |
| tree | 5efd9d994f283c4f49a4f1aa4819d9aad7de6e8e | |
| parent | [test] Add support for custom arguments to TestNodeCLI (diff) | |
| download | discoin-232e3e8471edb346c09f906c996b2f350cabc72a.tar.xz discoin-232e3e8471edb346c09f906c996b2f350cabc72a.zip | |
[test] Add assert_raises_process_error to assert process errors
| -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 a5bc495df..b2d8199d1 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. |