summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorYellow Dusk <yellow.dusk1590@fastmail.com>2022-01-22 07:09:34 (GMT)
committerGitHub <noreply@github.com>2022-01-22 07:09:34 (GMT)
commit82c53229e18f5853c82cb8ab6b9af1925a0e9e58 (patch)
tree2477557dc8b88bf0057f518825b52225052933d3
parent70c16468deee9390e34322d32fda57df6e0f46bb (diff)
downloadcpython-82c53229e18f5853c82cb8ab6b9af1925a0e9e58.zip
cpython-82c53229e18f5853c82cb8ab6b9af1925a0e9e58.tar.gz
cpython-82c53229e18f5853c82cb8ab6b9af1925a0e9e58.tar.bz2
bpo-46442: improve and rename testExceptionCleanupNames (GH-30758)
The test tested that explicitly deleting the local variable bound to the exception did not cause problems, but it did not test what it actually claimed to test, i.e. that the variable is deleted automatically.
-rw-r--r--Lib/test/test_exceptions.py16
1 files changed, 14 insertions, 2 deletions
diff --git a/Lib/test/test_exceptions.py b/Lib/test/test_exceptions.py
index 531b9c9..5932b9d 100644
--- a/Lib/test/test_exceptions.py
+++ b/Lib/test/test_exceptions.py
@@ -671,15 +671,27 @@ class ExceptionTests(unittest.TestCase):
self.assertTrue(str(Exception('a')))
self.assertTrue(str(Exception('a', 'b')))
- def testExceptionCleanupNames(self):
+ def test_exception_cleanup_names(self):
# Make sure the local variable bound to the exception instance by
# an "except" statement is only visible inside the except block.
try:
raise Exception()
except Exception as e:
- self.assertTrue(e)
+ self.assertIsInstance(e, Exception)
+ self.assertNotIn('e', locals())
+ with self.assertRaises(UnboundLocalError):
+ e
+
+ def test_exception_cleanup_names2(self):
+ # Make sure the cleanup doesn't break if the variable is explicitly deleted.
+ try:
+ raise Exception()
+ except Exception as e:
+ self.assertIsInstance(e, Exception)
del e
self.assertNotIn('e', locals())
+ with self.assertRaises(UnboundLocalError):
+ e
def testExceptionCleanupState(self):
# Make sure exception state is cleaned up as soon as the except