From fe8767f91dc5dbe9e428677b1e55697955143188 Mon Sep 17 00:00:00 2001 From: Yegor Roganov Date: Thu, 7 Sep 2017 19:48:29 +0300 Subject: [PATCH] Fix incorrect warning in StreamReader. --- aiohttp/streams.py | 1 + changes/2251.bugfix | 1 + tests/test_streams.py | 16 ++++++++++++++++ 3 files changed, 18 insertions(+) create mode 100644 changes/2251.bugfix diff --git a/aiohttp/streams.py b/aiohttp/streams.py index 9a0e01136a..5f8c4d8417 100644 --- a/aiohttp/streams.py +++ b/aiohttp/streams.py @@ -201,6 +201,7 @@ def unread_data(self, data): self._buffer_offset = 0 self._size += len(data) self._buffer.appendleft(data) + self._eof_counter = 0 def feed_data(self, data): assert not self._eof, 'feed_data after feed_eof' diff --git a/changes/2251.bugfix b/changes/2251.bugfix new file mode 100644 index 0000000000..ad2a76e063 --- /dev/null +++ b/changes/2251.bugfix @@ -0,0 +1 @@ +Fix incorrect warning in StreamReader. diff --git a/tests/test_streams.py b/tests/test_streams.py index e7d545a8a0..190ff31f6a 100644 --- a/tests/test_streams.py +++ b/tests/test_streams.py @@ -181,6 +181,22 @@ def test_read_eof_infinit(self, internal_logger): self.loop.run_until_complete(stream.read()) self.assertTrue(internal_logger.warning.called) + @mock.patch('aiohttp.streams.internal_logger') + def test_read_eof_unread_data_no_warning(self, internal_logger): + # Read bytes. + stream = self._make_one() + stream.feed_eof() + + self.loop.run_until_complete(stream.read()) + self.loop.run_until_complete(stream.read()) + self.loop.run_until_complete(stream.read()) + self.loop.run_until_complete(stream.read()) + self.loop.run_until_complete(stream.read()) + stream.unread_data(b'data') + self.loop.run_until_complete(stream.read()) + self.loop.run_until_complete(stream.read()) + self.assertFalse(internal_logger.warning.called) + def test_read_until_eof(self): # Read all bytes until eof. stream = self._make_one()