ยปCore Development>Code coverage>Lib/test/test_univnewlines2k.py

Python code coverage for Lib/test/test_univnewlines2k.py

#countcontent
1n/a# Tests universal newline support for both reading and parsing files.
21import unittest
31import os
41import sys
51from test import test_support
6n/a
71if not hasattr(sys.stdin, 'newlines'):
80 raise unittest.SkipTest, \
90 "This Python does not have universal newline support"
10n/a
111FATX = 'x' * (2**14)
12n/a
13n/aDATA_TEMPLATE = [
141 "line1=1",
15n/a "line2='this is a very long line designed to go past the magic " +
16n/a "hundred character limit that is inside fileobject.c and which " +
171 "is meant to speed up the common case, but we also want to test " +
181 "the uncommon case, naturally.'",
191 "def line3():pass",
201 "line4 = '%s'" % FATX,
21n/a ]
22n/a
231DATA_LF = "\n".join(DATA_TEMPLATE) + "\n"
241DATA_CR = "\r".join(DATA_TEMPLATE) + "\r"
251DATA_CRLF = "\r\n".join(DATA_TEMPLATE) + "\r\n"
26n/a
27n/a# Note that DATA_MIXED also tests the ability to recognize a lone \r
28n/a# before end-of-file.
291DATA_MIXED = "\n".join(DATA_TEMPLATE) + "\r"
305DATA_SPLIT = [x + "\n" for x in DATA_TEMPLATE]
311del x
32n/a
332class TestGenericUnivNewlines(unittest.TestCase):
34n/a # use a class variable DATA to define the data to write to the file
35n/a # and a class variable NEWLINE to set the expected newlines value
361 READMODE = 'U'
371 WRITEMODE = 'wb'
38n/a
391 def setUp(self):
4026 with open(test_support.TESTFN, self.WRITEMODE) as fp:
4126 fp.write(self.DATA)
42n/a
431 def tearDown(self):
4426 try:
4526 os.unlink(test_support.TESTFN)
460 except:
470 pass
48n/a
491 def test_read(self):
505 with open(test_support.TESTFN, self.READMODE) as fp:
515 data = fp.read()
525 self.assertEqual(data, DATA_LF)
535 self.assertEqual(repr(fp.newlines), repr(self.NEWLINE))
54n/a
551 def test_readlines(self):
565 with open(test_support.TESTFN, self.READMODE) as fp:
575 data = fp.readlines()
585 self.assertEqual(data, DATA_SPLIT)
595 self.assertEqual(repr(fp.newlines), repr(self.NEWLINE))
60n/a
611 def test_readline(self):
625 with open(test_support.TESTFN, self.READMODE) as fp:
635 data = []
645 d = fp.readline()
6525 while d:
6620 data.append(d)
6720 d = fp.readline()
685 self.assertEqual(data, DATA_SPLIT)
695 self.assertEqual(repr(fp.newlines), repr(self.NEWLINE))
70n/a
711 def test_seek(self):
725 with open(test_support.TESTFN, self.READMODE) as fp:
735 fp.readline()
745 pos = fp.tell()
755 data = fp.readlines()
765 self.assertEqual(data, DATA_SPLIT[1:])
775 fp.seek(pos)
785 data = fp.readlines()
795 self.assertEqual(data, DATA_SPLIT[1:])
80n/a
811 def test_execfile(self):
825 namespace = {}
835 with test_support.check_py3k_warnings():
845 execfile(test_support.TESTFN, namespace)
855 func = namespace['line3']
865 self.assertEqual(func.func_code.co_firstlineno, 3)
875 self.assertEqual(namespace['line4'], FATX)
88n/a
89n/a
902class TestNativeNewlines(TestGenericUnivNewlines):
911 NEWLINE = None
921 DATA = DATA_LF
931 READMODE = 'r'
941 WRITEMODE = 'w'
95n/a
962class TestCRNewlines(TestGenericUnivNewlines):
971 NEWLINE = '\r'
981 DATA = DATA_CR
99n/a
1002class TestLFNewlines(TestGenericUnivNewlines):
1011 NEWLINE = '\n'
1021 DATA = DATA_LF
103n/a
1042class TestCRLFNewlines(TestGenericUnivNewlines):
1051 NEWLINE = '\r\n'
1061 DATA = DATA_CRLF
107n/a
1081 def test_tell(self):
1091 with open(test_support.TESTFN, self.READMODE) as fp:
1101 self.assertEqual(repr(fp.newlines), repr(None))
1111 data = fp.readline()
1121 pos = fp.tell()
1131 self.assertEqual(repr(fp.newlines), repr(self.NEWLINE))
114n/a
1152class TestMixedNewlines(TestGenericUnivNewlines):
1161 NEWLINE = ('\r', '\n')
1171 DATA = DATA_MIXED
118n/a
119n/a
1201def test_main():
1211 test_support.run_unittest(
1221 TestNativeNewlines,
1231 TestCRNewlines,
1241 TestLFNewlines,
1251 TestCRLFNewlines,
1261 TestMixedNewlines
127n/a )
128n/a
1291if __name__ == '__main__':
1300 test_main()