Ignore:
Timestamp:
Mar 19, 2014, 11:31:01 PM (11 years ago)
Author:
dmik
Message:

python: Merge vendor 2.7.6 to trunk.

Location:
python/trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • python/trunk

  • python/trunk/Lib/test/test_univnewlines.py

    r2 r391  
    11# 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
     6from __future__ import print_function
     7from __future__ import unicode_literals
     8
     9import io
     10import _pyio as pyio
    211import unittest
    312import os
    413import sys
    5 from test import test_support
     14from test import test_support as support
    615
    716if 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")
    1019
    1120FATX = 'x' * (2**14)
     
    1322DATA_TEMPLATE = [
    1423    "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 " +
    1826        "the uncommon case, naturally.'",
    1927    "def line3():pass",
     
    2937DATA_MIXED = "\n".join(DATA_TEMPLATE) + "\r"
    3038DATA_SPLIT = [x + "\n" for x in DATA_TEMPLATE]
    31 del x
    3239
    3340class TestGenericUnivNewlines(unittest.TestCase):
    3441    # use a class variable DATA to define the data to write to the file
    3542    # and a class variable NEWLINE to set the expected newlines value
    36     READMODE = 'U'
     43    READMODE = 'r'
    3744    WRITEMODE = 'wb'
    3845
    3946    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)
    4352
    4453    def tearDown(self):
    4554        try:
    46             os.unlink(test_support.TESTFN)
     55            os.unlink(support.TESTFN)
    4756        except:
    4857            pass
    4958
    5059    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()
    5362        self.assertEqual(data, DATA_LF)
    54         self.assertEqual(repr(fp.newlines), repr(self.NEWLINE))
     63        self.assertEqual(set(fp.newlines), set(self.NEWLINE))
    5564
    5665    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()
    5968        self.assertEqual(data, DATA_SPLIT)
    60         self.assertEqual(repr(fp.newlines), repr(self.NEWLINE))
     69        self.assertEqual(set(fp.newlines), set(self.NEWLINE))
    6170
    6271    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 = []
    6874            d = fp.readline()
     75            while d:
     76                data.append(d)
     77                d = fp.readline()
    6978        self.assertEqual(data, DATA_SPLIT)
    70         self.assertEqual(repr(fp.newlines), repr(self.NEWLINE))
     79        self.assertEqual(set(fp.newlines), set(self.NEWLINE))
    7180
    7281    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()
    8089        self.assertEqual(data, DATA_SPLIT[1:])
    8190
    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 = None
    92     DATA = DATA_LF
    93     READMODE = 'r'
    94     WRITEMODE = 'w'
    9591
    9692class TestCRNewlines(TestGenericUnivNewlines):
     
    107103
    108104    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()
    113109        self.assertEqual(repr(fp.newlines), repr(self.NEWLINE))
    114110
     
    119115
    120116def 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)
    128133
    129134if __name__ == '__main__':
Note: See TracChangeset for help on using the changeset viewer.