8000 streams.StreamReader: Add 'at_eof()' method · python/asyncio@7eb2b22 · GitHub
[go: up one dir, main page]

Skip to content
This repository was archived by the owner on Nov 23, 2017. It is now read-only.

Commit 7eb2b22

Browse files
committed
streams.StreamReader: Add 'at_eof()' method
1 parent f590413 commit 7eb2b22

File tree

2 files changed

+19
-0
lines changed

2 files changed

+19
-0
lines changed

asyncio/streams.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -293,6 +293,10 @@ def feed_eof(self):
293293
if not waiter.cancelled():
294294
waiter.set_result(True)
295295

296+
def at_eof(self):
297+
"""Return True if the buffer is empty and 'feed_eof' was called."""
298+
return self._eof and not self._buffer
299+
296300
def feed_data(self, data):
297301
assert not self._eof, 'feed_data after feed_eof'
298302

tests/test_streams.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -204,6 +204,21 @@ def test_readline_limit_with_existing_data(self):
204204
# expected to be empty now.
205205
self.assertEqual(b'', stream._buffer)
206206

207+
def test_at_eof(self):
208+
stream = asyncio.StreamReader(loop=self.loop)
209+
self.assertFalse(stream.at_eof())
210+
211+
stream.feed_data(b'some data\n')
212+
self.assertFalse(stream.at_eof())
213+
214+
self.loop.run_until_complete(stream.readline())
215+
self.assertFalse(stream.at_eof())
216+
217+
stream.feed_data(b'some data\n')
218+
stream.feed_eof()
219+
self.loop.run_until_complete(stream.readline())
220+
self.assertTrue(stream.at_eof())
221+
207222
def test_readline_limit(self):
208223
# Read one line. StreamReaders are fed with data after
209224
# their 'readline' methods are called.

0 commit comments

Comments
 (0)
0