@@ -1969,6 +1969,25 @@ def test_makefile_mode(self):
19691969withsock.makefile(mode, encoding=encoding) asfp:
19701970self.assertEqual(fp.mode, mode)
197119711972+deftest_makefile_line_buffering(self):
1973+withsocket.socket() assock:
1974+formodein'r', 'w':
1975+withself.subTest(mode=mode):
1976+withsock.makefile(mode, buffering=1,
1977+encoding="utf-8") asfp:
1978+self.assertTrue(fp.line_buffering)
1979+1980+deftest_makefile_line_buffering_binary(self):
1981+# Line buffering is not supported in binary mode, as in open().
1982+withsocket.socket() assock:
1983+formodein'rb', 'wb':
1984+withself.subTest(mode=mode):
1985+withself.assertWarnsRegex(
1986+RuntimeWarning,
1987+"line buffering .* isn't supported in binary "
1988+"mode"):
1989+sock.makefile(mode, buffering=1).close()
1990+19721991deftest_makefile_invalid_mode(self):
19731992formodein'rt', 'x', '+', 'a':
19741993withself.subTest(mode=mode):
@@ -5761,10 +5780,20 @@ def testReadline(self):
57615780# Performing file readline test
57625781line=self.read_file.readline()
57635782self.assertEqual(line, self.read_msg)
5783+# Readline mode
5784+ifself.bufsize==1andself.read_mode=="r":
5785+self.assertTrue(self.read_file.line_buffering)
5764578657655787def_testReadline(self):
57665788self.write_file.write(self.write_msg)
5767-self.write_file.flush()
5789+# Readline mode: no need to flush
5790+ifself.bufsize==1andself.write_mode=="w":
5791+self.assertTrue(self.write_file.line_buffering)
5792+else:
5793+self.write_file.flush()
5794+# Prevent garbage collection from flushing
5795+# until the server has finished
5796+self.assertTrue(self.serv_finished.wait(5.0))
5768579757695798deftestCloseAfterMakefile(self):
57705799# The file returned by makefile should keep the socket open.
@@ -5922,11 +5951,6 @@ def _testWriteNonBlocking(self):
59225951self.serv_skipped="failed to saturate the socket buffer"
59235952592459535925-classLineBufferedFileObjectClassTestCase(FileObjectClassTestCase):
5926-5927-bufsize=1# Default-buffered for reading; line-buffered for writing
5928-5929-59305954classSmallBufferedFileObjectClassTestCase(FileObjectClassTestCase):
5931595559325956bufsize=2# Exercise the buffering code
@@ -5962,6 +5986,16 @@ class UnicodeReadWriteFileObjectClassTestCase(FileObjectClassTestCase):
59625986newline=''
59635987596459885989+classUnicodeLineBufferedFileObjectClassTestCase(FileObjectClassTestCase):
5990+5991+bufsize=1# Default-buffered for reading; line-buffered for writing
5992+read_mode='r'
5993+read_msg=MSG.decode('utf-8')
5994+write_mode='w'
5995+write_msg=MSG.decode('utf-8')
5996+newline=''
5997+5998+59655999classNetworkConnectionTest(object):
59666000"""Prove network connection."""
59676001