diff options
author | Victor Stinner <victor.stinner@gmail.com> | 2017-06-15 22:51:24 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-06-15 22:51:24 (GMT) |
commit | 3dc573c8d19dc42ed786ca3237afdad183c41ca0 (patch) | |
tree | ca07ce23ca68a2f2c6221a96621ab59debec27ae /Lib/unittest/test | |
parent | ab4ea09604ea7754a80e4fc36280f5772bf4a8b2 (diff) | |
download | cpython-3dc573c8d19dc42ed786ca3237afdad183c41ca0.zip cpython-3dc573c8d19dc42ed786ca3237afdad183c41ca0.tar.gz cpython-3dc573c8d19dc42ed786ca3237afdad183c41ca0.tar.bz2 |
Fix ref cycles in TestCase.assertRaises() (#193) (#2228)
bpo-23890: unittest.TestCase.assertRaises() now manually breaks a
reference cycle to not keep objects alive longer than expected.
(cherry picked from commit bbd3cf8f1ef1e91a8d6dac6411e18b4b9084abf5)
Diffstat (limited to 'Lib/unittest/test')
-rw-r--r-- | Lib/unittest/test/test_case.py | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/Lib/unittest/test/test_case.py b/Lib/unittest/test/test_case.py index 8f752b8..b849591 100644 --- a/Lib/unittest/test/test_case.py +++ b/Lib/unittest/test/test_case.py @@ -1273,6 +1273,19 @@ test case with self.assertRaises(TypeError): self.assertRaises((ValueError, object)) + def testAssertRaisesRefcount(self): + # bpo-23890: assertRaises() must not keep objects alive longer + # than expected + def func() : + try: + raise ValueError + except ValueError: + raise ValueError + + refcount = sys.getrefcount(func) + self.assertRaises(ValueError, func) + self.assertEqual(refcount, sys.getrefcount(func)) + def testAssertRaisesRegex(self): class ExceptionMock(Exception): pass |