]> granicus.if.org Git - python/commitdiff
Issue #22685: Fix test_pause_reading() of asyncio/test_subprocess
authorVictor Stinner <victor.stinner@gmail.com>
Thu, 15 Jan 2015 21:52:59 +0000 (22:52 +0100)
committerVictor Stinner <victor.stinner@gmail.com>
Thu, 15 Jan 2015 21:52:59 +0000 (22:52 +0100)
Override the connect_read_pipe() method of the loop to mock immediatly
pause_reading() and resume_reading() methods.

The test failed randomly on FreeBSD 9 buildbot and on Windows using trollius.

Lib/test/test_asyncio/test_subprocess.py

index a4c1f698197cf51574a57bfba06a292d1e42803a..ecc2c9d8a8588440061cb0bab9b49eb3437002fc 100644 (file)
@@ -179,6 +179,18 @@ class SubprocessMixin:
                 'sys.stdout.write("x" * %s)' % size,
                 'sys.stdout.flush()',
             ))
+
+            connect_read_pipe = self.loop.connect_read_pipe
+
+            @asyncio.coroutine
+            def connect_read_pipe_mock(*args, **kw):
+                transport, protocol = yield from connect_read_pipe(*args, **kw)
+                transport.pause_reading = mock.Mock()
+                transport.resume_reading = mock.Mock()
+                return (transport, protocol)
+
+            self.loop.connect_read_pipe = connect_read_pipe_mock
+
             proc = yield from asyncio.create_subprocess_exec(
                                          sys.executable, '-c', code,
                                          stdin=asyncio.subprocess.PIPE,
@@ -186,8 +198,6 @@ class SubprocessMixin:
                                          limit=limit,
                                          loop=self.loop)
             stdout_transport = proc._transport.get_pipe_transport(1)
-            stdout_transport.pause_reading = mock.Mock()
-            stdout_transport.resume_reading = mock.Mock()
 
             stdout, stderr = yield from proc.communicate()