bpo-44469: Fix tests for "async with" with bad object (GH-26817)

Test for execution of the body was null. It would pass
even if the code which should be skipped was executed.
This commit is contained in:
Serhiy Storchaka 2021-06-21 10:21:59 +03:00 committed by GitHub
parent a317778fd5
commit 5d2b3a0d68
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 12 additions and 6 deletions

View File

@ -1205,41 +1205,47 @@ class CoroutineTest(unittest.TestCase):
def __aenter__(self):
pass
body_executed = False
body_executed = None
async def foo():
nonlocal body_executed
body_executed = False
async with CM():
body_executed = True
with self.assertRaisesRegex(AttributeError, '__aexit__'):
run_async(foo())
self.assertFalse(body_executed)
self.assertIs(body_executed, False)
def test_with_3(self):
class CM:
def __aexit__(self):
pass
body_executed = False
body_executed = None
async def foo():
nonlocal body_executed
body_executed = False
async with CM():
body_executed = True
with self.assertRaisesRegex(AttributeError, '__aenter__'):
run_async(foo())
self.assertFalse(body_executed)
self.assertIs(body_executed, False)
def test_with_4(self):
class CM:
pass
body_executed = False
body_executed = None
async def foo():
nonlocal body_executed
body_executed = False
async with CM():
body_executed = True
with self.assertRaisesRegex(AttributeError, '__aenter__'):
run_async(foo())
self.assertFalse(body_executed)
self.assertIs(body_executed, False)
def test_with_5(self):
# While this test doesn't make a lot of sense,