Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 8261f83

Browse files
committed
Merge for issue #15744: add tests for the writelines() method of file objects.
2 parents d0ad0b3 + 0c7081a commit 8261f83

2 files changed

Lines changed: 68 additions & 1 deletion

File tree

Lib/test/test_fileio.py

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
from functools import wraps
1111

1212
from test.support import TESTFN, check_warnings, run_unittest, make_bad_fd
13+
from collections import UserList
1314

1415
from _io import FileIO as _FileIO
1516

@@ -68,6 +69,27 @@ def testReadinto(self):
6869
n = self.f.readinto(a)
6970
self.assertEqual(array('b', [1, 2]), a[:n])
7071

72+
def testWritelinesList(self):
73+
l = [b'123', b'456']
74+
self.f.writelines(l)
75+
self.f.close()
76+
self.f = _FileIO(TESTFN, 'rb')
77+
buf = self.f.read()
78+
self.assertEqual(buf, b'123456')
79+
80+
def testWritelinesUserList(self):
81+
l = UserList([b'123', b'456'])
82+
self.f.writelines(l)
83+
self.f.close()
84+
self.f = _FileIO(TESTFN, 'rb')
85+
buf = self.f.read()
86+
self.assertEqual(buf, b'123456')
87+
88+
def testWritelinesError(self):
89+
self.assertRaises(TypeError, self.f.writelines, [1, 2, 3])
90+
self.assertRaises(TypeError, self.f.writelines, None)
91+
self.assertRaises(TypeError, self.f.writelines, "abc")
92+
7193
def test_none_args(self):
7294
self.f.write(b"hi\nbye\nabc")
7395
self.f.close()

Lib/test/test_io.py

Lines changed: 46 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@
3232
import unittest
3333
import warnings
3434
import weakref
35-
from collections import deque
35+
from collections import deque, UserList
3636
from itertools import cycle, count
3737
from test import support
3838

@@ -1201,6 +1201,29 @@ def test_flush(self):
12011201
bufio.flush()
12021202
self.assertEqual(b"abc", writer._write_stack[0])
12031203

1204+
def test_writelines(self):
1205+
l = [b'ab', b'cd', b'ef']
1206+
writer = self.MockRawIO()
1207+
bufio = self.tp(writer, 8)
1208+
bufio.writelines(l)
1209+
bufio.flush()
1210+
self.assertEqual(b''.join(writer._write_stack), b'abcdef')
1211+
1212+
def test_writelines_userlist(self):
1213+
l = UserList([b'ab', b'cd', b'ef'])
1214+
writer = self.MockRawIO()
1215+
bufio = self.tp(writer, 8)
1216+
bufio.writelines(l)
1217+
bufio.flush()
1218+
self.assertEqual(b''.join(writer._write_stack), b'abcdef')
1219+
1220+
def test_writelines_error(self):
1221+
writer = self.MockRawIO()
1222+
bufio = self.tp(writer, 8)
1223+
self.assertRaises(TypeError, bufio.writelines, [1, 2, 3])
1224+
self.assertRaises(TypeError, bufio.writelines, None)
1225+
self.assertRaises(TypeError, bufio.writelines, 'abc')
1226+
12041227
def test_destructor(self):
12051228
writer = self.MockRawIO()
12061229
bufio = self.tp(writer, 8)
@@ -2304,6 +2327,28 @@ def test_read_by_chunk(self):
23042327
reads += c
23052328
self.assertEqual(reads, "A"*127+"\nB")
23062329

2330+
def test_writelines(self):
2331+
l = ['ab', 'cd', 'ef']
2332+
buf = self.BytesIO()
2333+
txt = self.TextIOWrapper(buf)
2334+
txt.writelines(l)
2335+
txt.flush()
2336+
self.assertEqual(buf.getvalue(), b'abcdef')
2337+
2338+
def test_writelines_userlist(self):
2339+
l = UserList(['ab', 'cd', 'ef'])
2340+
buf = self.BytesIO()
2341+
txt = self.TextIOWrapper(buf)
2342+
txt.writelines(l)
2343+
txt.flush()
2344+
self.assertEqual(buf.getvalue(), b'abcdef')
2345+
2346+
def test_writelines_error(self):
2347+
txt = self.TextIOWrapper(self.BytesIO())
2348+
self.assertRaises(TypeError, txt.writelines, [1, 2, 3])
2349+
self.assertRaises(TypeError, txt.writelines, None)
2350+
self.assertRaises(TypeError, txt.writelines, b'abc')
2351+
23072352
def test_issue1395_1(self):
23082353
txt = self.TextIOWrapper(self.BytesIO(self.testdata), encoding="ascii")
23092354

0 commit comments

Comments
 (0)