aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorJoão Barbosa <joao.paulo.barbosa@gmail.com>2017-09-06 16:35:57 +0100
committerMarcoFalke <falke.marco@gmail.com>2017-10-03 19:10:05 +0200
commite38211f5e8900ee9027c671d7c655958e4dbe8e7 (patch)
tree8c8269263a6b54105bd9997f5539fa7a81539a95 /test
parente0bfd28de28efb1ffa84e89d76c144824dae987f (diff)
downloadbitcoin-e38211f5e8900ee9027c671d7c655958e4dbe8e7.tar.xz
[test] Add assert_raises_process_error to assert process errors
Github-Pull: #11125 Rebased-From: 232e3e8471edb346c09f906c996b2f350cabc72a
Diffstat (limited to 'test')
-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.