mirror of
https://github.com/python/cpython.git
synced 2025-08-04 00:48:58 +00:00
Revert "bpo-35621: Support running subprocesses in asyncio when loop is executed in non-main thread (#13630)" (GH-13793)
https://bugs.python.org/issue35621
This commit is contained in:
parent
eddef861b4
commit
9535aff942
4 changed files with 54 additions and 262 deletions
|
@ -1082,8 +1082,6 @@ class AbstractChildWatcherTests(unittest.TestCase):
|
|||
NotImplementedError, watcher.attach_loop, f)
|
||||
self.assertRaises(
|
||||
NotImplementedError, watcher.close)
|
||||
self.assertRaises(
|
||||
NotImplementedError, watcher.is_active)
|
||||
self.assertRaises(
|
||||
NotImplementedError, watcher.__enter__)
|
||||
self.assertRaises(
|
||||
|
@ -1786,6 +1784,15 @@ class ChildWatcherTestsMixin:
|
|||
if isinstance(self.watcher, asyncio.FastChildWatcher):
|
||||
self.assertFalse(self.watcher._zombies)
|
||||
|
||||
@waitpid_mocks
|
||||
def test_add_child_handler_with_no_loop_attached(self, m):
|
||||
callback = mock.Mock()
|
||||
with self.create_watcher() as watcher:
|
||||
with self.assertRaisesRegex(
|
||||
RuntimeError,
|
||||
'the child watcher does not have a loop attached'):
|
||||
watcher.add_child_handler(100, callback)
|
||||
|
||||
|
||||
class SafeChildWatcherTests (ChildWatcherTestsMixin, test_utils.TestCase):
|
||||
def create_watcher(self):
|
||||
|
@ -1802,16 +1809,17 @@ class PolicyTests(unittest.TestCase):
|
|||
def create_policy(self):
|
||||
return asyncio.DefaultEventLoopPolicy()
|
||||
|
||||
def test_get_default_child_watcher(self):
|
||||
def test_get_child_watcher(self):
|
||||
policy = self.create_policy()
|
||||
self.assertIsNone(policy._watcher)
|
||||
|
||||
watcher = policy.get_child_watcher()
|
||||
self.assertIsInstance(watcher, asyncio.ThreadedChildWatcher)
|
||||
self.assertIsInstance(watcher, asyncio.SafeChildWatcher)
|
||||
|
||||
self.assertIs(policy._watcher, watcher)
|
||||
|
||||
self.assertIs(watcher, policy.get_child_watcher())
|
||||
self.assertIsNone(watcher._loop)
|
||||
|
||||
def test_get_child_watcher_after_set(self):
|
||||
policy = self.create_policy()
|
||||
|
@ -1821,6 +1829,18 @@ class PolicyTests(unittest.TestCase):
|
|||
self.assertIs(policy._watcher, watcher)
|
||||
self.assertIs(watcher, policy.get_child_watcher())
|
||||
|
||||
def test_get_child_watcher_with_mainloop_existing(self):
|
||||
policy = self.create_policy()
|
||||
loop = policy.get_event_loop()
|
||||
|
||||
self.assertIsNone(policy._watcher)
|
||||
watcher = policy.get_child_watcher()
|
||||
|
||||
self.assertIsInstance(watcher, asyncio.SafeChildWatcher)
|
||||
self.assertIs(watcher._loop, loop)
|
||||
|
||||
loop.close()
|
||||
|
||||
def test_get_child_watcher_thread(self):
|
||||
|
||||
def f():
|
||||
|
@ -1846,11 +1866,7 @@ class PolicyTests(unittest.TestCase):
|
|||
policy = self.create_policy()
|
||||
loop = policy.get_event_loop()
|
||||
|
||||
# Explicitly setup SafeChildWatcher,
|
||||
# default ThreadedChildWatcher has no _loop property
|
||||
watcher = asyncio.SafeChildWatcher()
|
||||
policy.set_child_watcher(watcher)
|
||||
watcher.attach_loop(loop)
|
||||
watcher = policy.get_child_watcher()
|
||||
|
||||
self.assertIs(watcher._loop, loop)
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue