|
|
|
@ -153,28 +153,32 @@ class _AssertRaisesBaseContext(_BaseTestCaseContext): |
|
|
|
If args is not empty, call a callable passing positional and keyword |
|
|
|
arguments. |
|
|
|
""" |
|
|
|
if not _is_subtype(self.expected, self._base_type): |
|
|
|
raise TypeError('%s() arg 1 must be %s' % |
|
|
|
(name, self._base_type_str)) |
|
|
|
if args and args[0] is None: |
|
|
|
warnings.warn("callable is None", |
|
|
|
DeprecationWarning, 3) |
|
|
|
args = () |
|
|
|
if not args: |
|
|
|
self.msg = kwargs.pop('msg', None) |
|
|
|
if kwargs: |
|
|
|
warnings.warn('%r is an invalid keyword argument for ' |
|
|
|
'this function' % next(iter(kwargs)), |
|
|
|
DeprecationWarning, 3) |
|
|
|
return self |
|
|
|
|
|
|
|
callable_obj, *args = args |
|
|
|
try: |
|
|
|
self.obj_name = callable_obj.__name__ |
|
|
|
except AttributeError: |
|
|
|
self.obj_name = str(callable_obj) |
|
|
|
with self: |
|
|
|
callable_obj(*args, **kwargs) |
|
|
|
if not _is_subtype(self.expected, self._base_type): |
|
|
|
raise TypeError('%s() arg 1 must be %s' % |
|
|
|
(name, self._base_type_str)) |
|
|
|
if args and args[0] is None: |
|
|
|
warnings.warn("callable is None", |
|
|
|
DeprecationWarning, 3) |
|
|
|
args = () |
|
|
|
if not args: |
|
|
|
self.msg = kwargs.pop('msg', None) |
|
|
|
if kwargs: |
|
|
|
warnings.warn('%r is an invalid keyword argument for ' |
|
|
|
'this function' % next(iter(kwargs)), |
|
|
|
DeprecationWarning, 3) |
|
|
|
return self |
|
|
|
|
|
|
|
callable_obj, *args = args |
|
|
|
try: |
|
|
|
self.obj_name = callable_obj.__name__ |
|
|
|
except AttributeError: |
|
|
|
self.obj_name = str(callable_obj) |
|
|
|
with self: |
|
|
|
callable_obj(*args, **kwargs) |
|
|
|
finally: |
|
|
|
# bpo-23890: manually break a reference cycle |
|
|
|
self = None |
|
|
|
|
|
|
|
|
|
|
|
class _AssertRaisesContext(_AssertRaisesBaseContext): |
|
|
|
@ -725,7 +729,11 @@ class TestCase(object): |
|
|
|
self.assertEqual(the_exception.error_code, 3) |
|
|
|
""" |
|
|
|
context = _AssertRaisesContext(expected_exception, self) |
|
|
|
return context.handle('assertRaises', args, kwargs) |
|
|
|
try: |
|
|
|
return context.handle('assertRaises', args, kwargs) |
|
|
|
finally: |
|
|
|
# bpo-23890: manually break a reference cycle |
|
|
|
context = None |
|
|
|
|
|
|
|
def assertWarns(self, expected_warning, *args, **kwargs): |
|
|
|
"""Fail unless a warning of class warnClass is triggered |
|
|
|
|