mirror of
https://github.com/python/cpython.git
synced 2025-11-01 10:45:30 +00:00
gh-124594: Create and reuse the same context for the entire asyncio REPL session (#124595)
Co-authored-by: Andrew Svetlov <andrew.svetlov@gmail.com>
This commit is contained in:
parent
3e3a4d2315
commit
67e01a430f
3 changed files with 42 additions and 2 deletions
|
|
@ -291,5 +291,42 @@ class TestInteractiveModeSyntaxErrors(unittest.TestCase):
|
|||
self.assertEqual(traceback_lines, expected_lines)
|
||||
|
||||
|
||||
class TestAsyncioREPLContextVars(unittest.TestCase):
|
||||
def test_toplevel_contextvars_sync(self):
|
||||
user_input = dedent("""\
|
||||
from contextvars import ContextVar
|
||||
var = ContextVar("var", default="failed")
|
||||
var.set("ok")
|
||||
""")
|
||||
p = spawn_repl("-m", "asyncio")
|
||||
p.stdin.write(user_input)
|
||||
user_input2 = dedent("""
|
||||
print(f"toplevel contextvar test: {var.get()}")
|
||||
""")
|
||||
p.stdin.write(user_input2)
|
||||
output = kill_python(p)
|
||||
self.assertEqual(p.returncode, 0)
|
||||
expected = "toplevel contextvar test: ok"
|
||||
self.assertIn(expected, output, expected)
|
||||
|
||||
def test_toplevel_contextvars_async(self):
|
||||
user_input = dedent("""\
|
||||
from contextvars import ContextVar
|
||||
var = ContextVar('var', default='failed')
|
||||
""")
|
||||
p = spawn_repl("-m", "asyncio")
|
||||
p.stdin.write(user_input)
|
||||
user_input2 = "async def set_var(): var.set('ok')\n"
|
||||
p.stdin.write(user_input2)
|
||||
user_input3 = "await set_var()\n"
|
||||
p.stdin.write(user_input3)
|
||||
user_input4 = "print(f'toplevel contextvar test: {var.get()}')\n"
|
||||
p.stdin.write(user_input4)
|
||||
output = kill_python(p)
|
||||
self.assertEqual(p.returncode, 0)
|
||||
expected = "toplevel contextvar test: ok"
|
||||
self.assertIn(expected, output, expected)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue