Thanks to visit codestin.com
Credit goes to github.com

Skip to content
Merged
Prev Previous commit
Next Next commit
Add context var tests
  • Loading branch information
gaogaotiantian committed Apr 22, 2025
commit e95353206ed297269f700cfa6a7972704a9d85fa
60 changes: 58 additions & 2 deletions Lib/test/test_pdb.py
Original file line number Diff line number Diff line change
Expand Up @@ -2155,7 +2155,7 @@ def test_pdb_await_support():
... return 42

>>> async def main():
... import pdb;
... import pdb
... task = asyncio.create_task(test())
... await pdb.Pdb(nosigint=True, readrc=False).set_trace_async()
... pass
Expand Down Expand Up @@ -2218,7 +2218,7 @@ def test_pdb_await_with_breakpoint():
... return 42

>>> async def main():
... import pdb;
... import pdb
... task = asyncio.create_task(test())
... await pdb.Pdb(nosigint=True, readrc=False).set_trace_async()

Expand Down Expand Up @@ -2255,6 +2255,62 @@ def test_pdb_await_with_breakpoint():
(Pdb) continue
"""

def test_pdb_await_contextvar():
"""Testing await support context vars

>>> import asyncio
>>> import contextvars

>>> var = contextvars.ContextVar('var')

>>> async def get_var():
... return var.get()

>>> async def set_var(val):
... var.set(val)
... return var.get()

>>> async def main():
... var.set(42)
... import pdb
... await pdb.Pdb(nosigint=True, readrc=False).set_trace_async()

>>> def test_function():
... asyncio.run(main(), loop_factory=asyncio.EventLoop)

>>> with PdbTestInput([
... 'p var.get()',
... 'print(await get_var())',
... 'print(await asyncio.create_task(set_var(100)))',
... 'p var.get()',
... 'print(await set_var(99))',
... 'p var.get()',
... 'continue',
... ]):
... test_function()
> <doctest test.test_pdb.test_pdb_await_contextvar[5]>(4)main()
-> await pdb.Pdb(nosigint=True, readrc=False).set_trace_async()
(Pdb) p var.get()
42
(Pdb) print(await get_var())
42
> <doctest test.test_pdb.test_pdb_await_contextvar[5]>(4)main()
-> await pdb.Pdb(nosigint=True, readrc=False).set_trace_async()
(Pdb) print(await asyncio.create_task(set_var(100)))
100
> <doctest test.test_pdb.test_pdb_await_contextvar[5]>(4)main()
-> await pdb.Pdb(nosigint=True, readrc=False).set_trace_async()
(Pdb) p var.get()
42
(Pdb) print(await set_var(99))
99
> <doctest test.test_pdb.test_pdb_await_contextvar[5]>(4)main()
-> await pdb.Pdb(nosigint=True, readrc=False).set_trace_async()
(Pdb) p var.get()
Comment thread
kumaraditya303 marked this conversation as resolved.
99
(Pdb) continue
"""

def test_pdb_next_command_for_coroutine():
"""Testing skip unwinding stack on yield for coroutines for "next" command

Expand Down
Loading