From 228743c6b7aaf43fc9682edf9a583931f9c318a0 Mon Sep 17 00:00:00 2001 From: "Jason R. Coombs" Date: Tue, 27 Feb 2018 04:15:16 -0500 Subject: [PATCH] Extract ExceptionContext from pytest.python_api.RaisesContext. --- py/_code/code.py | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/py/_code/code.py b/py/_code/code.py index dad79628..4ff5a7be 100644 --- a/py/_code/code.py +++ b/py/_code/code.py @@ -794,3 +794,20 @@ def getrawcode(obj, trycall=True): return x return obj + +class ExceptionContext(object): + def __init__(self, expected_exception): + self.expected_exception = expected_exception + self.excinfo = None + + def __enter__(self): + self.excinfo = object.__new__(ExceptionInfo) + return self.excinfo + + def __exit__(self, *tp): + __tracebackhide__ = True + self.excinfo.__init__(tp) + suppress_exception = issubclass(self.excinfo.type, self.expected_exception) + if sys.version_info[0] == 2 and suppress_exception: + sys.exc_clear() + return suppress_exception