]> granicus.if.org Git - python/commitdiff
Fix StreamReader.__repr__
authorAndrew Svetlov <andrew.svetlov@gmail.com>
Tue, 29 Sep 2015 15:36:00 +0000 (18:36 +0300)
committerAndrew Svetlov <andrew.svetlov@gmail.com>
Tue, 29 Sep 2015 15:36:00 +0000 (18:36 +0300)
Lib/asyncio/streams.py
Lib/test/test_asyncio/test_streams.py

index 6484c435aac3074442916fe4e372a0b37719cd5d..bb9fb313af7b36544167420aec13c47d417f1bf8 100644 (file)
@@ -324,7 +324,7 @@ class StreamReader:
     def __repr__(self):
         info = ['StreamReader']
         if self._buffer:
-            info.append('%d bytes' % len(info))
+            info.append('%d bytes' % len(self._buffer))
         if self._eof:
             info.append('eof')
         if self._limit != _DEFAULT_LIMIT:
index ef6f6030343f324763a892d72a845807c53bedcd..d4a75820c9d5da18ddd7c21fd0672e7a67430f8f 100644 (file)
@@ -632,6 +632,48 @@ os.close(fd)
         protocol = asyncio.StreamReaderProtocol(reader)
         self.assertIs(protocol._loop, self.loop)
 
+    def test___repr__(self):
+        stream = asyncio.StreamReader(loop=self.loop)
+        self.assertEqual("<StreamReader>", repr(stream))
+
+    def test___repr__nondefault_limit(self):
+        stream = asyncio.StreamReader(loop=self.loop, limit=123)
+        self.assertEqual("<StreamReader l=123>", repr(stream))
+
+    def test___repr__eof(self):
+        stream = asyncio.StreamReader(loop=self.loop)
+        stream.feed_eof()
+        self.assertEqual("<StreamReader eof>", repr(stream))
+
+    def test___repr__data(self):
+        stream = asyncio.StreamReader(loop=self.loop)
+        stream.feed_data(b'data')
+        self.assertEqual("<StreamReader 4 bytes>", repr(stream))
+
+    def test___repr__exception(self):
+        stream = asyncio.StreamReader(loop=self.loop)
+        exc = RuntimeError()
+        stream.set_exception(exc)
+        self.assertEqual("<StreamReader e=RuntimeError()>", repr(stream))
+
+    def test___repr__waiter(self):
+        stream = asyncio.StreamReader(loop=self.loop)
+        stream._waiter = asyncio.Future(loop=self.loop)
+        self.assertRegex(
+            repr(stream),
+            "<StreamReader w=<Future pending[\S ]*>>")
+        stream._waiter.set_result(None)
+        self.loop.run_until_complete(stream._waiter)
+        stream._waiter = None
+        self.assertEqual("<StreamReader>", repr(stream))
+
+    def test___repr__transport(self):
+        stream = asyncio.StreamReader(loop=self.loop)
+        stream._transport = mock.Mock()
+        stream._transport.__repr__ = mock.Mock()
+        stream._transport.__repr__.return_value = "<Transport>"
+        self.assertEqual("<StreamReader t=<Transport>>", repr(stream))
+
 
 if __name__ == '__main__':
     unittest.main()