diff -r 1704deb7e6d7 Lib/test/test_fileio.py --- a/Lib/test/test_fileio.py Sun Sep 16 00:13:10 2012 +0200 +++ b/Lib/test/test_fileio.py Sat Sep 15 23:19:54 2012 -0300 @@ -10,6 +10,7 @@ from functools import wraps from test.support import TESTFN, check_warnings, run_unittest, make_bad_fd +from collections import UserList from _io import FileIO as _FileIO @@ -68,6 +69,32 @@ n = self.f.readinto(a) self.assertEqual(array('b', [1, 2]), a[:n]) + def testWritelinesUserList(self): + # verify writeline with instance sequence + l = UserList([b'1', b'2']) + self.f.writelines(l) + self.f.close() + self.f = _FileIO(TESTFN, 'rb') + buf = self.f.read() + self.assertEqual(buf, b'12') + + def testWritelinesIntegers(self): + # verify writelines with integers + self.assertRaises(TypeError, self.f.writelines, [1, 2, 3]) + + def testWritelinesIntegersUserList(self): + # verify writelines with integers in UserList + l = UserList([1,2,3]) + self.assertRaises(TypeError, self.f.writelines, l) + + def testWritelinesNonString(self): + # verify writelines with non-string object + class NonString: + pass + + self.assertRaises(TypeError, self.f.writelines, + [NonString(), NonString()]) + def test_none_args(self): self.f.write(b"hi\nbye\nabc") self.f.close() diff -r 1704deb7e6d7 Lib/test/test_io.py --- a/Lib/test/test_io.py Sun Sep 16 00:13:10 2012 +0200 +++ b/Lib/test/test_io.py Sat Sep 15 23:19:54 2012 -0300 @@ -32,7 +32,7 @@ import unittest import warnings import weakref -from collections import deque +from collections import deque, UserList from itertools import cycle, count from test import support @@ -407,6 +407,41 @@ with self.open(support.TESTFN, "r") as f: self.assertRaises(TypeError, f.readline, 5.3) + def test_writelines(self): + with self.open(support.TESTFN, "wb", buffering=0) as f: + l = [b'a', b'b', b'c'] + f.writelines(l) + with self.open(support.TESTFN, "rb") as f: + self.assertEqual(f.read(), b"abc") + + def testWritelinesUserList(self): + # verify writelines with instance sequence + with self.open(support.TESTFN, "wb", buffering=0) as f: + l = UserList([b'1', b'2']) + f.writelines(l) + with self.open(support.TESTFN, "rb") as f: + self.assertEqual(f.read(), b"12") + + def testWritelinesIntegers(self): + # verify writelines with integers + with self.open(support.TESTFN, "wb", buffering=0) as f: + self.assertRaises(TypeError, f.writelines, [1, 2, 3]) + + def testWritelinesIntegersUserList(self): + # verify writelines with integers in UserList + l = UserList([1,2,3]) + with self.open(support.TESTFN, "wb", buffering=0) as f: + self.assertRaises(TypeError, f.writelines, l) + + def testWritelinesNonString(self): + # verify writelines with non-string object + class NonString: + pass + + with self.open(support.TESTFN, "wb", buffering=0) as f: + self.assertRaises(TypeError, f.writelines, + [NonString(), NonString()]) + def test_raw_bytes_io(self): f = self.BytesIO() self.write_ops(f) @@ -1193,6 +1228,46 @@ bufio.flush() self.assertEqual(b"abc", writer._write_stack[0]) + def testWritelines(self): + l = [b'a', b'b', b'c'] + writer = self.MockRawIO() + bufio = self.tp(writer, 8) + bufio.writelines(l) + bufio.flush() + self.assertEqual(b''.join(writer._write_stack), b'abc') + + def testWritelinesUserList(self): + l = UserList([b'a', b'b', b'c']) + writer = self.MockRawIO() + bufio = self.tp(writer, 8) + bufio.writelines(l) + bufio.flush() + self.assertEqual(b''.join(writer._write_stack), b'abc') + + def testWritelinesIntegers(self): + # verify writelines with integers + l = [1, 2, 3] + writer = self.MockRawIO() + bufio = self.tp(writer, 8) + self.assertRaises(TypeError, bufio.writelines, l) + + def testWritelinesString(self): + # verify writelines with bytes + l = ['a', 'b', 'c'] + writer = self.MockRawIO() + bufio = self.tp(writer, 8) + self.assertRaises(TypeError, bufio.writelines, l) + + def testWritelinesNonString(self): + # verify writelines with non-string object + class NonString: + pass + + writer = self.MockRawIO() + bufio = self.tp(writer, 8) + self.assertRaises(TypeError, bufio.writelines, + [NonString(), NonString()]) + def test_destructor(self): writer = self.MockRawIO() bufio = self.tp(writer, 8) @@ -1963,6 +2038,46 @@ t.flush() self.assertEqual(b.getvalue(), b"abc?def\n") + def testWritelines(self): + lines = ['a', 'b', 'c'] + b = self.BytesIO() + t = self.TextIOWrapper(b, encoding='ascii') + t.writelines(lines) + t.flush() + self.assertEqual(b.getvalue(), b'abc') + + def testWritelinesUserList(self): + lines = UserList(['a', 'b', 'c']) + b = self.BytesIO() + t = self.TextIOWrapper(b, encoding='ascii') + t.writelines(lines) + t.flush() + self.assertEqual(b.getvalue(), b'abc') + + def testWritelinesIntegers(self): + # verify writelines with integers + l = [1, 2, 3] + b = self.BytesIO() + t = self.TextIOWrapper(b, encoding='ascii') + self.assertRaises(TypeError, t.writelines, l) + + def testWritelinesBytes(self): + # verify writelines with bytes + l = [b'a', b'b', b'c'] + b = self.BytesIO() + t = self.TextIOWrapper(b, encoding='ascii') + self.assertRaises(TypeError, t.writelines, l) + + def testWritelinesNonString(self): + # verify writelines with non-string object + class NonString: + pass + + b = self.BytesIO() + t = self.TextIOWrapper(b, encoding='ascii') + self.assertRaises(TypeError, t.writelines, + [NonString(), NonString()]) + def test_newlines(self): input_lines = [ "unix\n", "windows\r\n", "os9\r", "last\n", "nonl" ]