|
|
|
@ -1,5 +1,6 @@ |
|
|
|
import datetime |
|
|
|
import warnings |
|
|
|
import weakref |
|
|
|
import unittest |
|
|
|
from itertools import product |
|
|
|
|
|
|
|
@ -97,6 +98,36 @@ class Test_Assertions(unittest.TestCase): |
|
|
|
else: |
|
|
|
self.fail("assertRaises() didn't let exception pass through") |
|
|
|
|
|
|
|
def test_assertRaises_frames_survival(self): |
|
|
|
# Issue #9815: assertRaises should avoid keeping local variables |
|
|
|
# in a traceback alive. |
|
|
|
class A: |
|
|
|
pass |
|
|
|
wr = None |
|
|
|
|
|
|
|
class Foo(unittest.TestCase): |
|
|
|
|
|
|
|
def foo(self): |
|
|
|
nonlocal wr |
|
|
|
a = A() |
|
|
|
wr = weakref.ref(a) |
|
|
|
try: |
|
|
|
raise IOError |
|
|
|
except IOError: |
|
|
|
raise ValueError |
|
|
|
|
|
|
|
def test_functional(self): |
|
|
|
self.assertRaises(ValueError, self.foo) |
|
|
|
|
|
|
|
def test_with(self): |
|
|
|
with self.assertRaises(ValueError): |
|
|
|
self.foo() |
|
|
|
|
|
|
|
Foo("test_functional").run() |
|
|
|
self.assertIsNone(wr()) |
|
|
|
Foo("test_with").run() |
|
|
|
self.assertIsNone(wr()) |
|
|
|
|
|
|
|
def testAssertNotRegex(self): |
|
|
|
self.assertNotRegex('Ala ma kota', r'r+') |
|
|
|
try: |
|
|
|
|