#9543: Fix regression introduced in r83624.
This commit is contained in:
parent
13bc24b4a4
commit
b833fa88d3
|
@ -299,7 +299,7 @@ class _fileobject(object):
|
||||||
finally:
|
finally:
|
||||||
if write_offset < data_size:
|
if write_offset < data_size:
|
||||||
remainder = data[write_offset:]
|
remainder = data[write_offset:]
|
||||||
del view, data # explicit free
|
del data # explicit free
|
||||||
self._wbuf.append(remainder)
|
self._wbuf.append(remainder)
|
||||||
self._wbuf_len = len(remainder)
|
self._wbuf_len = len(remainder)
|
||||||
|
|
||||||
|
|
|
@ -1044,6 +1044,30 @@ class NetworkConnectionBehaviourTest(SocketTCPTest, ThreadableTest):
|
||||||
self.cli = sock = socket.create_connection((HOST, self.port), timeout=1)
|
self.cli = sock = socket.create_connection((HOST, self.port), timeout=1)
|
||||||
self.failUnlessRaises(socket.timeout, lambda: sock.recv(5))
|
self.failUnlessRaises(socket.timeout, lambda: sock.recv(5))
|
||||||
|
|
||||||
|
class TestIssue9543(SocketTCPTest, NetworkConnectionTest):
|
||||||
|
"""
|
||||||
|
This test exercises the code in the _fileobject.flush() method when the
|
||||||
|
whole write buffer hasn't been flushed.
|
||||||
|
See http://bugs.python.org/issue9543
|
||||||
|
"""
|
||||||
|
# XXX: this is just a sanity check, proper tests for flush() should still
|
||||||
|
# be added
|
||||||
|
def setUp(self):
|
||||||
|
SocketTCPTest.setUp(self)
|
||||||
|
NetworkConnectionTest.clientSetUp(self)
|
||||||
|
|
||||||
|
def test_issue9543(self):
|
||||||
|
self.cli.close()
|
||||||
|
file_a = self.serv.makefile('w')
|
||||||
|
file_a.write('x')
|
||||||
|
# flush() will try to send data to self.cli and raise an error because
|
||||||
|
# it's closed
|
||||||
|
self.assertRaises(socket.error, file_a.flush)
|
||||||
|
# close() will raise an error too, because it calls flush() before
|
||||||
|
# closing the file
|
||||||
|
self.assertRaises(socket.error, file_a.close)
|
||||||
|
self.assertTrue(file_a.closed)
|
||||||
|
|
||||||
|
|
||||||
class Urllib2FileobjectTest(unittest.TestCase):
|
class Urllib2FileobjectTest(unittest.TestCase):
|
||||||
|
|
||||||
|
@ -1311,6 +1335,7 @@ def test_main():
|
||||||
NetworkConnectionNoServer,
|
NetworkConnectionNoServer,
|
||||||
NetworkConnectionAttributesTest,
|
NetworkConnectionAttributesTest,
|
||||||
NetworkConnectionBehaviourTest,
|
NetworkConnectionBehaviourTest,
|
||||||
|
TestIssue9543,
|
||||||
])
|
])
|
||||||
if hasattr(socket, "socketpair"):
|
if hasattr(socket, "socketpair"):
|
||||||
tests.append(BasicSocketPairTest)
|
tests.append(BasicSocketPairTest)
|
||||||
|
|
Loading…
Reference in New Issue