mirror of
https://github.com/python/cpython.git
synced 2025-09-26 10:19:53 +00:00
parent
513e9b4f61
commit
2380feeff8
2 changed files with 61 additions and 3 deletions
|
@ -962,8 +962,8 @@ class FileObjectClassTestCase(SocketConnectedTest):
|
|||
def tearDown(self):
|
||||
self.serv_file.close()
|
||||
self.assertTrue(self.serv_file.closed)
|
||||
self.serv_file = None
|
||||
SocketConnectedTest.tearDown(self)
|
||||
self.serv_file = None
|
||||
|
||||
def clientSetUp(self):
|
||||
SocketConnectedTest.clientSetUp(self)
|
||||
|
@ -1151,6 +1151,64 @@ class LineBufferedFileObjectClassTestCase(FileObjectClassTestCase):
|
|||
|
||||
bufsize = 1 # Default-buffered for reading; line-buffered for writing
|
||||
|
||||
class SocketMemo(object):
|
||||
"""A wrapper to keep track of sent data, needed to examine write behaviour"""
|
||||
def __init__(self, sock):
|
||||
self._sock = sock
|
||||
self.sent = []
|
||||
|
||||
def send(self, data, flags=0):
|
||||
n = self._sock.send(data, flags)
|
||||
self.sent.append(data[:n])
|
||||
return n
|
||||
|
||||
def sendall(self, data, flags=0):
|
||||
self._sock.sendall(data, flags)
|
||||
self.sent.append(data)
|
||||
|
||||
def __getattr__(self, attr):
|
||||
return getattr(self._sock, attr)
|
||||
|
||||
def getsent(self):
|
||||
return [e.tobytes() if isinstance(e, memoryview) else e for e in self.sent]
|
||||
|
||||
def setUp(self):
|
||||
FileObjectClassTestCase.setUp(self)
|
||||
self.serv_file._sock = self.SocketMemo(self.serv_file._sock)
|
||||
|
||||
def testLinebufferedWrite(self):
|
||||
# Write two lines, in small chunks
|
||||
msg = MSG.strip()
|
||||
print >> self.serv_file, msg,
|
||||
print >> self.serv_file, msg
|
||||
|
||||
# second line:
|
||||
print >> self.serv_file, msg,
|
||||
print >> self.serv_file, msg,
|
||||
print >> self.serv_file, msg
|
||||
|
||||
# third line
|
||||
print >> self.serv_file, ''
|
||||
|
||||
self.serv_file.flush()
|
||||
|
||||
msg1 = "%s %s\n"%(msg, msg)
|
||||
msg2 = "%s %s %s\n"%(msg, msg, msg)
|
||||
msg3 = "\n"
|
||||
self.assertEqual(self.serv_file._sock.getsent(), [msg1, msg2, msg3])
|
||||
|
||||
def _testLinebufferedWrite(self):
|
||||
msg = MSG.strip()
|
||||
msg1 = "%s %s\n"%(msg, msg)
|
||||
msg2 = "%s %s %s\n"%(msg, msg, msg)
|
||||
msg3 = "\n"
|
||||
l1 = self.cli_file.readline()
|
||||
self.assertEqual(l1, msg1)
|
||||
l2 = self.cli_file.readline()
|
||||
self.assertEqual(l2, msg2)
|
||||
l3 = self.cli_file.readline()
|
||||
self.assertEqual(l3, msg3)
|
||||
|
||||
|
||||
class SmallBufferedFileObjectClassTestCase(FileObjectClassTestCase):
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue