diff options
author | Victor Stinner <victor.stinner@gmail.com> | 2015-01-09 15:41:50 +0100 |
---|---|---|
committer | Victor Stinner <victor.stinner@gmail.com> | 2015-01-09 15:41:50 +0100 |
commit | 0fefcb7261413bc4656676378030f6161592e4d1 (patch) | |
tree | f1dc74ba5f8043383e98747faabe247c9ec39e79 | |
parent | aef31b1a43f6632ef37689c41d96a6edf9e62724 (diff) | |
download | trollius-git-0fefcb7261413bc4656676378030f6161592e4d1.tar.gz |
Tulip issue #184: FlowControlMixin constructor now get the event loop if the
loop parameter is not set
Add unit tests to ensure that constructor of StreamReader and
StreamReaderProtocol classes get the event loop.
-rw-r--r-- | asyncio/streams.py | 10 | ||||
-rw-r--r-- | tests/test_streams.py | 19 |
2 files changed, 26 insertions, 3 deletions
diff --git a/asyncio/streams.py b/asyncio/streams.py index c77eb60..5a96b24 100644 --- a/asyncio/streams.py +++ b/asyncio/streams.py @@ -145,7 +145,10 @@ class FlowControlMixin(protocols.Protocol): """ def __init__(self, loop=None): - self._loop = loop # May be None; we may never need it. + if loop is None: + self._loop = events.get_event_loop() + else: + self._loop = loop self._paused = False self._drain_waiter = None self._connection_lost = False @@ -306,8 +309,9 @@ class StreamReader: # it also doubles as half the buffer limit. self._limit = limit if loop is None: - loop = events.get_event_loop() - self._loop = loop + self._loop = events.get_event_loop() + else: + self._loop = loop self._buffer = bytearray() self._eof = False # Whether we're done. self._waiter = None # A future. diff --git a/tests/test_streams.py b/tests/test_streams.py index 05963cf..a18603a 100644 --- a/tests/test_streams.py +++ b/tests/test_streams.py @@ -625,6 +625,25 @@ os.close(fd) data = self.loop.run_until_complete(reader.read(-1)) self.assertEqual(data, b'data') + def test_streamreader_constructor(self): + self.addCleanup(asyncio.set_event_loop, None) + asyncio.set_event_loop(self.loop) + + # Tulip issue #184: Ensure that StreamReaderProtocol constructor + # retrieves the current loop if the loop parameter is not set + reader = asyncio.StreamReader() + self.assertIs(reader._loop, self.loop) + + def test_streamreaderprotocol_constructor(self): + self.addCleanup(asyncio.set_event_loop, None) + asyncio.set_event_loop(self.loop) + + # Tulip issue #184: Ensure that StreamReaderProtocol constructor + # retrieves the current loop if the loop parameter is not set + reader = mock.Mock() + protocol = asyncio.StreamReaderProtocol(reader) + self.assertIs(protocol._loop, self.loop) + if __name__ == '__main__': unittest.main() |