gh-132435: Test syntax warnings in a finally block (GH-132436)

This commit is contained in:
Tomas R. 2025-04-13 22:44:00 +02:00 committed by GitHub
parent fc7e4e7bbd
commit 887eabc5a7
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 23 additions and 0 deletions

View file

@ -1664,6 +1664,26 @@ class TestSpecifics(unittest.TestCase):
self.assertEqual(len(caught), 2)
def test_compile_warning_in_finally(self):
# Ensure that warnings inside finally blocks are
# only emitted once despite the block being
# compiled twice (for normal execution and for
# exception handling).
source = textwrap.dedent("""
try:
pass
finally:
1 is 1
""")
with warnings.catch_warnings(record=True) as caught:
warnings.simplefilter("default")
compile(source, '<stdin>', 'exec')
self.assertEqual(len(caught), 1)
self.assertEqual(caught[0].category, SyntaxWarning)
self.assertIn("\"is\" with 'int' literal", str(caught[0].message))
class TestBooleanExpression(unittest.TestCase):
class Value:
def __init__(self):