@@ -291,5 +291,42 @@ def f():
291
291
self .assertEqual (traceback_lines , expected_lines )
292
292
293
293
294
+ class TestAsyncioREPLContextVars (unittest .TestCase ):
295
+ def test_toplevel_contextvars_sync (self ):
296
+ user_input = dedent ("""\
297
+ from contextvars import ContextVar
298
+ var = ContextVar("var", default="failed")
299
+ var.set("ok")
300
+ """ )
301
+ p = spawn_repl ("-m" , "asyncio" )
302
+ p .stdin .write (user_input )
303
+ user_input2 = dedent ("""
304
+ print(f"toplevel contextvar test: {var.get()}")
305
+ """ )
306
+ p .stdin .write (user_input2 )
307
+ output = kill_python (p )
308
+ self .assertEqual (p .returncode , 0 )
309
+ expected = "toplevel contextvar test: ok"
310
+ self .assertIn (expected , output , expected )
311
+
312
+ def test_toplevel_contextvars_async (self ):
313
+ user_input = dedent ("""\
314
+ from contextvars import ContextVar
315
+ var = ContextVar('var', default='failed')
316
+ """ )
317
+ p = spawn_repl ("-m" , "asyncio" )
318
+ p .stdin .write (user_input )
319
+ user_input2 = "async def set_var(): var.set('ok')\n "
320
+ p .stdin .write (user_input2 )
321
+ user_input3 = "await set_var()\n "
322
+ p .stdin .write (user_input3 )
323
+ user_input4 = "print(f'toplevel contextvar test: {var.get()}')\n "
324
+ p .stdin .write (user_input4 )
325
+ output = kill_python (p )
326
+ self .assertEqual (p .returncode , 0 )
327
+ expected = "toplevel contextvar test: ok"
328
+ self .assertIn (expected , output , expected )
329
+
330
+
294
331
if __name__ == "__main__" :
295
332
unittest .main ()
0 commit comments