Changeset 391 for python/trunk/Lib/test/test_univnewlines.py
- Timestamp:
- Mar 19, 2014, 11:31:01 PM (11 years ago)
- Location:
- python/trunk
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
python/trunk
-
Property svn:mergeinfo
set to
/python/vendor/Python-2.7.6 merged eligible /python/vendor/current merged eligible
-
Property svn:mergeinfo
set to
-
python/trunk/Lib/test/test_univnewlines.py
r2 r391 1 1 # Tests universal newline support for both reading and parsing files. 2 3 # NOTE: this file tests the new `io` library backported from Python 3.x. 4 # Similar tests for the builtin file object can be found in test_univnewlines2k.py. 5 6 from __future__ import print_function 7 from __future__ import unicode_literals 8 9 import io 10 import _pyio as pyio 2 11 import unittest 3 12 import os 4 13 import sys 5 from test import test_support 14 from test import test_support as support 6 15 7 16 if not hasattr(sys.stdin, 'newlines'): 8 raise test_support.TestSkipped, \9 "This Python does not have universal newline support" 17 raise unittest.SkipTest( 18 "This Python does not have universal newline support") 10 19 11 20 FATX = 'x' * (2**14) … … 13 22 DATA_TEMPLATE = [ 14 23 "line1=1", 15 "line2='this is a very long line designed to go past the magic " + 16 "hundred character limit that is inside fileobject.c and which " + 17 "is meant to speed up the common case, but we also want to test " + 24 "line2='this is a very long line designed to go past any default " + 25 "buffer limits that exist in io.py but we also want to test " + 18 26 "the uncommon case, naturally.'", 19 27 "def line3():pass", … … 29 37 DATA_MIXED = "\n".join(DATA_TEMPLATE) + "\r" 30 38 DATA_SPLIT = [x + "\n" for x in DATA_TEMPLATE] 31 del x32 39 33 40 class TestGenericUnivNewlines(unittest.TestCase): 34 41 # use a class variable DATA to define the data to write to the file 35 42 # and a class variable NEWLINE to set the expected newlines value 36 READMODE = ' U'43 READMODE = 'r' 37 44 WRITEMODE = 'wb' 38 45 39 46 def setUp(self): 40 fp = open(test_support.TESTFN, self.WRITEMODE) 41 fp.write(self.DATA) 42 fp.close() 47 data = self.DATA 48 if "b" in self.WRITEMODE: 49 data = data.encode("ascii") 50 with self.open(support.TESTFN, self.WRITEMODE) as fp: 51 fp.write(data) 43 52 44 53 def tearDown(self): 45 54 try: 46 os.unlink( test_support.TESTFN)55 os.unlink(support.TESTFN) 47 56 except: 48 57 pass 49 58 50 59 def test_read(self): 51 fp = open(test_support.TESTFN, self.READMODE)52 data = fp.read()60 with self.open(support.TESTFN, self.READMODE) as fp: 61 data = fp.read() 53 62 self.assertEqual(data, DATA_LF) 54 self.assertEqual( repr(fp.newlines), repr(self.NEWLINE))63 self.assertEqual(set(fp.newlines), set(self.NEWLINE)) 55 64 56 65 def test_readlines(self): 57 fp = open(test_support.TESTFN, self.READMODE)58 data = fp.readlines()66 with self.open(support.TESTFN, self.READMODE) as fp: 67 data = fp.readlines() 59 68 self.assertEqual(data, DATA_SPLIT) 60 self.assertEqual( repr(fp.newlines), repr(self.NEWLINE))69 self.assertEqual(set(fp.newlines), set(self.NEWLINE)) 61 70 62 71 def test_readline(self): 63 fp = open(test_support.TESTFN, self.READMODE) 64 data = [] 65 d = fp.readline() 66 while d: 67 data.append(d) 72 with self.open(support.TESTFN, self.READMODE) as fp: 73 data = [] 68 74 d = fp.readline() 75 while d: 76 data.append(d) 77 d = fp.readline() 69 78 self.assertEqual(data, DATA_SPLIT) 70 self.assertEqual( repr(fp.newlines), repr(self.NEWLINE))79 self.assertEqual(set(fp.newlines), set(self.NEWLINE)) 71 80 72 81 def test_seek(self): 73 fp = open(test_support.TESTFN, self.READMODE)74 fp.readline()75 pos = fp.tell()76 data = fp.readlines()77 self.assertEqual(data, DATA_SPLIT[1:])78 fp.seek(pos)79 data = fp.readlines()82 with self.open(support.TESTFN, self.READMODE) as fp: 83 fp.readline() 84 pos = fp.tell() 85 data = fp.readlines() 86 self.assertEqual(data, DATA_SPLIT[1:]) 87 fp.seek(pos) 88 data = fp.readlines() 80 89 self.assertEqual(data, DATA_SPLIT[1:]) 81 90 82 def test_execfile(self):83 namespace = {}84 execfile(test_support.TESTFN, namespace)85 func = namespace['line3']86 self.assertEqual(func.func_code.co_firstlineno, 3)87 self.assertEqual(namespace['line4'], FATX)88 89 90 class TestNativeNewlines(TestGenericUnivNewlines):91 NEWLINE = None92 DATA = DATA_LF93 READMODE = 'r'94 WRITEMODE = 'w'95 91 96 92 class TestCRNewlines(TestGenericUnivNewlines): … … 107 103 108 104 def test_tell(self): 109 fp = open(test_support.TESTFN, self.READMODE)110 self.assertEqual(repr(fp.newlines), repr(None))111 data = fp.readline()112 pos = fp.tell()105 with self.open(support.TESTFN, self.READMODE) as fp: 106 self.assertEqual(repr(fp.newlines), repr(None)) 107 data = fp.readline() 108 pos = fp.tell() 113 109 self.assertEqual(repr(fp.newlines), repr(self.NEWLINE)) 114 110 … … 119 115 120 116 def test_main(): 121 test_support.run_unittest( 122 TestNativeNewlines, 123 TestCRNewlines, 124 TestLFNewlines, 125 TestCRLFNewlines, 126 TestMixedNewlines 127 ) 117 base_tests = (TestCRNewlines, 118 TestLFNewlines, 119 TestCRLFNewlines, 120 TestMixedNewlines) 121 tests = [] 122 # Test the C and Python implementations. 123 for test in base_tests: 124 class CTest(test): 125 open = io.open 126 CTest.__name__ = str("C" + test.__name__) 127 class PyTest(test): 128 open = staticmethod(pyio.open) 129 PyTest.__name__ = str("Py" + test.__name__) 130 tests.append(CTest) 131 tests.append(PyTest) 132 support.run_unittest(*tests) 128 133 129 134 if __name__ == '__main__':
Note:
See TracChangeset
for help on using the changeset viewer.