Kaydet (Commit) 9d24ff02 authored tarafından Amaury Forgeot d'Arc's avatar Amaury Forgeot d'Arc

Follow-up of r67300: correct a failure in socket.makefile().

SocketIO objects now always have 'name' and 'mode' attributes.
üst 304da211
...@@ -149,8 +149,6 @@ class socket(_socket.socket): ...@@ -149,8 +149,6 @@ class socket(_socket.socket):
if buffering == 0: if buffering == 0:
if not binary: if not binary:
raise ValueError("unbuffered streams must be binary") raise ValueError("unbuffered streams must be binary")
raw.name = self.fileno()
raw.mode = mode
return raw return raw
if reading and writing: if reading and writing:
buffer = io.BufferedRWPair(raw, raw, buffering) buffer = io.BufferedRWPair(raw, raw, buffering)
...@@ -160,11 +158,8 @@ class socket(_socket.socket): ...@@ -160,11 +158,8 @@ class socket(_socket.socket):
assert writing assert writing
buffer = io.BufferedWriter(raw, buffering) buffer = io.BufferedWriter(raw, buffering)
if binary: if binary:
buffer.name = self.fileno()
buffer.mode = mode
return buffer return buffer
text = io.TextIOWrapper(buffer, encoding, newline) text = io.TextIOWrapper(buffer, encoding, newline)
text.name = self.fileno()
text.mode = mode text.mode = mode
return text return text
...@@ -230,6 +225,14 @@ class SocketIO(io.RawIOBase): ...@@ -230,6 +225,14 @@ class SocketIO(io.RawIOBase):
def fileno(self): def fileno(self):
return self._sock.fileno() return self._sock.fileno()
@property
def name(self):
return self._sock.fileno()
@property
def mode(self):
return self._mode
def close(self): def close(self):
if self.closed: if self.closed:
return return
......
...@@ -848,6 +848,14 @@ class FileObjectClassTestCase(SocketConnectedTest): ...@@ -848,6 +848,14 @@ class FileObjectClassTestCase(SocketConnectedTest):
def _testClosedAttr(self): def _testClosedAttr(self):
self.assert_(not self.cli_file.closed) self.assert_(not self.cli_file.closed)
def testAttributes(self):
self.assertEqual(self.serv_file.mode, 'r')
self.assertEqual(self.serv_file.name, self.cli_conn.fileno())
def _testAttributes(self):
self.assertEqual(self.cli_file.mode, 'w')
self.assertEqual(self.cli_file.name, self.serv_conn.fileno())
class UnbufferedFileObjectClassTestCase(FileObjectClassTestCase): class UnbufferedFileObjectClassTestCase(FileObjectClassTestCase):
"""Repeat the tests from FileObjectClassTestCase with bufsize==0. """Repeat the tests from FileObjectClassTestCase with bufsize==0.
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment