Browse Source

[test] Add assert_raises_process_error to assert process errors

Github-Pull: #11125
Rebased-From: 232e3e8471
tags/v0.15.1
João Barbosa 3 years ago
parent
commit
e38211f5e8
1 changed files with 25 additions and 0 deletions
  1. 25
    0
      test/functional/test_framework/util.py

+ 25
- 0
test/functional/test_framework/util.py View File

@@ -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.


Loading…
Cancel
Save