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

Skip to content
Closed
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Set contextvars on top of the module.
  • Loading branch information
hellysmile committed Jun 30, 2018
commit 20e139d5e69cedd0cbc8a4b481e47a7a2a87ea4d
29 changes: 20 additions & 9 deletions Lib/test/test_asyncio/test_events.py
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,9 @@
from test.test_asyncio import utils as test_utils
from test import support

foo_ctx = contextvars.ContextVar('foo')
foo_ctx.set('bar')


def tearDownModule():
asyncio.set_event_loop_policy(None)
Expand Down Expand Up @@ -370,33 +373,41 @@ def run():
time.sleep(0.4)
self.assertFalse(called)

def test_run_in_executor_hierarchy(self):
def run():
foo_ctx.set('foo')
res = foo_ctx.get()
self.assertEqual(res, 'foo')
return res

f = self.loop.run_in_executor(None, run)
res = self.loop.run_until_complete(f)
self.assertEqual(res, 'foo')

res = foo_ctx.get()
self.assertEqual(res, 'bar')

def test_run_in_executor_no_context(self):
def run():
return foo.get()
return foo_ctx.get()

foo = contextvars.ContextVar('foo')
foo.set('bar')
f = self.loop.run_in_executor(None, run)
res = self.loop.run_until_complete(f)
self.assertEqual(res, 'bar')

def test_run_in_executor_context(self):
def run():
return foo.get()
return foo_ctx.get()

foo = contextvars.ContextVar('foo')
foo.set('bar')
context = contextvars.copy_context()
f = self.loop.run_in_executor(None, run, context=context)
res = self.loop.run_until_complete(f)
self.assertEqual(res, 'bar')

def test_run_in_executor_context_args(self):
def run(arg):
return (arg, foo.get())
return (arg, foo_ctx.get())

foo = contextvars.ContextVar('foo')
foo.set('bar')
context = contextvars.copy_context()
f = self.loop.run_in_executor(None, run, 'yo', context=context)
res = self.loop.run_until_complete(f)
Expand Down