aboutsummaryrefslogtreecommitdiff
path: root/test/functional/test_framework/util.py
diff options
context:
space:
mode:
authorJoão Barbosa <joao.paulo.barbosa@gmail.com>2017-09-06 16:35:57 +0100
committerJoão Barbosa <joao.paulo.barbosa@gmail.com>2017-09-07 00:35:28 +0100
commit232e3e8471edb346c09f906c996b2f350cabc72a (patch)
tree5efd9d994f283c4f49a4f1aa4819d9aad7de6e8e /test/functional/test_framework/util.py
parent5c18a84b9a49e3f9dacf0502dbf7d5d755f38da6 (diff)
downloadbitcoin-232e3e8471edb346c09f906c996b2f350cabc72a.tar.xz
[test] Add assert_raises_process_error to assert process errors
Diffstat (limited to 'test/functional/test_framework/util.py')
-rw-r--r--test/functional/test_framework/util.py25
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.