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_bytes.py

    r2 r391  
    1010import sys
    1111import copy
     12import functools
    1213import pickle
    1314import tempfile
    1415import unittest
    15 import warnings
    1616import test.test_support
    1717import test.string_tests
    1818import test.buffer_tests
     19
     20
     21if sys.flags.bytes_warning:
     22    def check_bytes_warnings(func):
     23        @functools.wraps(func)
     24        def wrapper(*args, **kw):
     25            with test.test_support.check_warnings(('', BytesWarning)):
     26                return func(*args, **kw)
     27        return wrapper
     28else:
     29    # no-op
     30    def check_bytes_warnings(func):
     31        return func
     32
    1933
    2034class Indexable:
     
    2640
    2741class BaseBytesTest(unittest.TestCase):
    28 
    29     def setUp(self):
    30         self.warning_filters = warnings.filters[:]
    31 
    32     def tearDown(self):
    33         warnings.filters = self.warning_filters
    3442
    3543    def test_basics(self):
     
    6371                            Indexable(255)])
    6472        self.assertEqual(list(b), [0, 1, 254, 255])
    65         self.assertRaises(ValueError, bytearray, [Indexable(-1)])
    66         self.assertRaises(ValueError, bytearray, [Indexable(256)])
     73        self.assertRaises(ValueError, self.type2test, [Indexable(-1)])
     74        self.assertRaises(ValueError, self.type2test, [Indexable(256)])
    6775
    6876    def test_from_ssize(self):
    69         self.assertEqual(bytearray(0), b'')
    70         self.assertEqual(bytearray(1), b'\x00')
    71         self.assertEqual(bytearray(5), b'\x00\x00\x00\x00\x00')
    72         self.assertRaises(ValueError, bytearray, -1)
    73 
    74         self.assertEqual(bytearray('0', 'ascii'), b'0')
    75         self.assertEqual(bytearray(b'0'), b'0')
     77        self.assertEqual(self.type2test(0), b'')
     78        self.assertEqual(self.type2test(1), b'\x00')
     79        self.assertEqual(self.type2test(5), b'\x00\x00\x00\x00\x00')
     80        self.assertRaises(ValueError, self.type2test, -1)
     81
     82        self.assertEqual(self.type2test('0', 'ascii'), b'0')
     83        self.assertEqual(self.type2test(b'0'), b'0')
     84        self.assertRaises(OverflowError, self.type2test, sys.maxsize + 1)
    7685
    7786    def test_constructor_type_errors(self):
     
    7988        class C:
    8089            pass
    81         # allowed in 2.6
     90        # allowed in 2.x
    8291        #self.assertRaises(TypeError, self.type2test, ["0"])
    8392        self.assertRaises(TypeError, self.type2test, [0.0])
     
    103112
    104113        self.assertEqual(b1, b2)
    105         self.failUnless(b2 != b3)
    106         self.failUnless(b1 <= b2)
    107         self.failUnless(b1 <= b3)
    108         self.failUnless(b1 <  b3)
    109         self.failUnless(b1 >= b2)
    110         self.failUnless(b3 >= b2)
    111         self.failUnless(b3 >  b2)
    112 
    113         self.failIf(b1 != b2)
    114         self.failIf(b2 == b3)
    115         self.failIf(b1 >  b2)
    116         self.failIf(b1 >  b3)
    117         self.failIf(b1 >= b3)
    118         self.failIf(b1 <  b2)
    119         self.failIf(b3 <  b2)
    120         self.failIf(b3 <= b2)
    121 
     114        self.assertTrue(b2 != b3)
     115        self.assertTrue(b1 <= b2)
     116        self.assertTrue(b1 <= b3)
     117        self.assertTrue(b1 <  b3)
     118        self.assertTrue(b1 >= b2)
     119        self.assertTrue(b3 >= b2)
     120        self.assertTrue(b3 >  b2)
     121
     122        self.assertFalse(b1 != b2)
     123        self.assertFalse(b2 == b3)
     124        self.assertFalse(b1 >  b2)
     125        self.assertFalse(b1 >  b3)
     126        self.assertFalse(b1 >= b3)
     127        self.assertFalse(b1 <  b2)
     128        self.assertFalse(b3 <  b2)
     129        self.assertFalse(b3 <= b2)
     130
     131    @check_bytes_warnings
    122132    def test_compare_to_str(self):
    123         warnings.simplefilter('ignore', BytesWarning)
    124133        # Byte comparisons with unicode should always fail!
    125134        # Test this for all expected byte orders and Unicode character sizes
     
    187196        self.assertRaises(UnicodeDecodeError, b.decode, "utf8")
    188197        self.assertEqual(b.decode("utf8", "ignore"), "Hello world\n")
     198        self.assertEqual(b.decode(errors="ignore", encoding="utf8"),
     199                         "Hello world\n")
    189200
    190201    def test_from_int(self):
     
    221232    def test_contains(self):
    222233        b = self.type2test(b"abc")
    223         self.failUnless(ord('a') in b)
    224         self.failUnless(int(ord('a')) in b)
    225         self.failIf(200 in b)
    226         self.failIf(200 in b)
     234        self.assertIn(ord('a'), b)
     235        self.assertIn(int(ord('a')), b)
     236        self.assertNotIn(200, b)
    227237        self.assertRaises(ValueError, lambda: 300 in b)
    228238        self.assertRaises(ValueError, lambda: -1 in b)
     
    231241        self.assertRaises(TypeError, lambda: u"a" in b)
    232242        for f in bytes, bytearray:
    233             self.failUnless(f(b"") in b)
    234             self.failUnless(f(b"a") in b)
    235             self.failUnless(f(b"b") in b)
    236             self.failUnless(f(b"c") in b)
    237             self.failUnless(f(b"ab") in b)
    238             self.failUnless(f(b"bc") in b)
    239             self.failUnless(f(b"abc") in b)
    240             self.failIf(f(b"ac") in b)
    241             self.failIf(f(b"d") in b)
    242             self.failIf(f(b"dab") in b)
    243             self.failIf(f(b"abd") in b)
     243            self.assertIn(f(b""), b)
     244            self.assertIn(f(b"a"), b)
     245            self.assertIn(f(b"b"), b)
     246            self.assertIn(f(b"c"), b)
     247            self.assertIn(f(b"ab"), b)
     248            self.assertIn(f(b"bc"), b)
     249            self.assertIn(f(b"abc"), b)
     250            self.assertNotIn(f(b"ac"), b)
     251            self.assertNotIn(f(b"d"), b)
     252            self.assertNotIn(f(b"dab"), b)
     253            self.assertNotIn(f(b"abd"), b)
    244254
    245255    def test_fromhex(self):
    246256        self.assertRaises(TypeError, self.type2test.fromhex)
    247257        self.assertRaises(TypeError, self.type2test.fromhex, 1)
    248         self.assertEquals(self.type2test.fromhex(u''), self.type2test())
     258        self.assertEqual(self.type2test.fromhex(u''), self.type2test())
    249259        b = bytearray([0x1a, 0x2b, 0x30])
    250         self.assertEquals(self.type2test.fromhex(u'1a2B30'), b)
    251         self.assertEquals(self.type2test.fromhex(u'  1A 2B  30   '), b)
    252         self.assertEquals(self.type2test.fromhex(u'0000'), b'\0\0')
    253         self.assertRaises(TypeError, self.type2test.fromhex, b'1B')
     260        self.assertEqual(self.type2test.fromhex(u'1a2B30'), b)
     261        self.assertEqual(self.type2test.fromhex(u'  1A 2B  30   '), b)
     262        self.assertEqual(self.type2test.fromhex(u'0000'), b'\0\0')
    254263        self.assertRaises(ValueError, self.type2test.fromhex, u'a')
    255264        self.assertRaises(ValueError, self.type2test.fromhex, u'rt')
     
    268277        self.assertEqual(self.type2test(b".").join([b"ab", b"cd"]), b"ab.cd")
    269278        # XXX more...
    270 
    271     def test_index(self):
    272         b = self.type2test(b'parrot')
    273         self.assertEqual(b.index('p'), 0)
    274         self.assertEqual(b.index('rr'), 2)
    275         self.assertEqual(b.index('t'), 5)
    276         self.assertRaises(ValueError, lambda: b.index('w'))
    277279
    278280    def test_count(self):
     
    361363        self.assertRaises(TypeError, self.type2test(b'a b').split, u' ')
    362364
     365    def test_split_unicodewhitespace(self):
     366        b = self.type2test(b"\x09\x0A\x0B\x0C\x0D\x1C\x1D\x1E\x1F")
     367        self.assertEqual(b.split(), [b'\x1c\x1d\x1e\x1f'])
     368
    363369    def test_rsplit(self):
    364370        b = self.type2test(b'mississippi')
     
    384390    def test_rsplit_unicodewhitespace(self):
    385391        b = self.type2test(b"\x09\x0A\x0B\x0C\x0D\x1C\x1D\x1E\x1F")
    386         self.assertEqual(b.split(), [b'\x1c\x1d\x1e\x1f'])
    387392        self.assertEqual(b.rsplit(), [b'\x1c\x1d\x1e\x1f'])
    388393
     
    390395        b = self.type2test(b'mississippi')
    391396        self.assertEqual(b.partition(b'ss'), (b'mi', b'ss', b'issippi'))
    392         self.assertEqual(b.rpartition(b'w'), (b'', b'', b'mississippi'))
     397        self.assertEqual(b.partition(b'w'), (b'mississippi', b'', b''))
    393398
    394399    def test_rpartition(self):
     
    396401        self.assertEqual(b.rpartition(b'ss'), (b'missi', b'ss', b'ippi'))
    397402        self.assertEqual(b.rpartition(b'i'), (b'mississipp', b'i', b''))
     403        self.assertEqual(b.rpartition(b'w'), (b'', b'', b'mississippi'))
    398404
    399405    def test_pickling(self):
     
    436442        self.assertEqual(b.rstrip(), b' \t\n\r\f\vabc')
    437443
    438     def XXXtest_strip_bytearray(self):
    439         # XXX memoryview not available
     444    def test_strip_bytearray(self):
    440445        self.assertEqual(self.type2test(b'abc').strip(memoryview(b'ac')), b'b')
    441446        self.assertEqual(self.type2test(b'abc').lstrip(memoryview(b'ac')), b'bc')
     
    451456        self.assertEqual([ord(b[i:i+1]) for i in range(len(b))],
    452457                         [0, 65, 127, 128, 255])
     458
     459    def test_none_arguments(self):
     460        # issue 11828
     461        b = self.type2test(b'hello')
     462        l = self.type2test(b'l')
     463        h = self.type2test(b'h')
     464        x = self.type2test(b'x')
     465        o = self.type2test(b'o')
     466
     467        self.assertEqual(2, b.find(l, None))
     468        self.assertEqual(3, b.find(l, -2, None))
     469        self.assertEqual(2, b.find(l, None, -2))
     470        self.assertEqual(0, b.find(h, None, None))
     471
     472        self.assertEqual(3, b.rfind(l, None))
     473        self.assertEqual(3, b.rfind(l, -2, None))
     474        self.assertEqual(2, b.rfind(l, None, -2))
     475        self.assertEqual(0, b.rfind(h, None, None))
     476
     477        self.assertEqual(2, b.index(l, None))
     478        self.assertEqual(3, b.index(l, -2, None))
     479        self.assertEqual(2, b.index(l, None, -2))
     480        self.assertEqual(0, b.index(h, None, None))
     481
     482        self.assertEqual(3, b.rindex(l, None))
     483        self.assertEqual(3, b.rindex(l, -2, None))
     484        self.assertEqual(2, b.rindex(l, None, -2))
     485        self.assertEqual(0, b.rindex(h, None, None))
     486
     487        self.assertEqual(2, b.count(l, None))
     488        self.assertEqual(1, b.count(l, -2, None))
     489        self.assertEqual(1, b.count(l, None, -2))
     490        self.assertEqual(0, b.count(x, None, None))
     491
     492        self.assertEqual(True, b.endswith(o, None))
     493        self.assertEqual(True, b.endswith(o, -2, None))
     494        self.assertEqual(True, b.endswith(l, None, -2))
     495        self.assertEqual(False, b.endswith(x, None, None))
     496
     497        self.assertEqual(True, b.startswith(h, None))
     498        self.assertEqual(True, b.startswith(l, -2, None))
     499        self.assertEqual(True, b.startswith(h, None, -2))
     500        self.assertEqual(False, b.startswith(x, None, None))
     501
     502    def test_find_etc_raise_correct_error_messages(self):
     503        # issue 11828
     504        b = self.type2test(b'hello')
     505        x = self.type2test(b'x')
     506        self.assertRaisesRegexp(TypeError, r'\bfind\b', b.find,
     507                                x, None, None, None)
     508        self.assertRaisesRegexp(TypeError, r'\brfind\b', b.rfind,
     509                                x, None, None, None)
     510        self.assertRaisesRegexp(TypeError, r'\bindex\b', b.index,
     511                                x, None, None, None)
     512        self.assertRaisesRegexp(TypeError, r'\brindex\b', b.rindex,
     513                                x, None, None, None)
     514        self.assertRaisesRegexp(TypeError, r'\bcount\b', b.count,
     515                                x, None, None, None)
     516        self.assertRaisesRegexp(TypeError, r'\bstartswith\b', b.startswith,
     517                                x, None, None, None)
     518        self.assertRaisesRegexp(TypeError, r'\bendswith\b', b.endswith,
     519                                x, None, None, None)
    453520
    454521
     
    569636        self.assertEqual(b, bytearray([0, 1, 2, 42, 42, 42, 3, 4, 5, 6, 7, 8, 9]))
    570637
     638        b[3:] = b'foo'
     639        self.assertEqual(b, bytearray([0, 1, 2, 102, 111, 111]))
     640
     641        b[:3] = memoryview(b'foo')
     642        self.assertEqual(b, bytearray([102, 111, 111, 102, 111, 111]))
     643
     644        b[3:4] = []
     645        self.assertEqual(b, bytearray([102, 111, 111, 111, 111]))
     646
     647        b[1:] = list(b'uuuu')  # this works only on Python2
     648        self.assertEqual(b, bytearray([102, 117, 117, 117, 117]))
     649
     650        for elem in [5, -5, 0, long(10e20), u'str', 2.3, [u'a', u'b'], [[]]]:
     651            with self.assertRaises(TypeError):
     652                b[3:4] = elem
     653
     654        for elem in [[254, 255, 256], [-256, 9000]]:
     655            with self.assertRaises(ValueError):
     656                b[3:4] = elem
     657
    571658    def test_extended_set_del_slice(self):
    572659        indices = (0, None, 1, 3, 19, 300, 1<<333, -1, -2, -31, -300)
     
    583670                    L[start:stop:step] = data
    584671                    b[start:stop:step] = data
    585                     self.assertEquals(b, bytearray(L))
     672                    self.assertEqual(b, bytearray(L))
    586673
    587674                    del L[start:stop:step]
    588675                    del b[start:stop:step]
    589                     self.assertEquals(b, bytearray(L))
     676                    self.assertEqual(b, bytearray(L))
    590677
    591678    def test_setslice_trap(self):
     
    602689        self.assertEqual(b, b"abcdef")
    603690        self.assertEqual(b, b1)
    604         self.failUnless(b is b1)
     691        self.assertTrue(b is b1)
    605692        b += b"xyz"
    606693        self.assertEqual(b, b"abcdefxyz")
     
    618705        self.assertEqual(b, b"abcabcabc")
    619706        self.assertEqual(b, b1)
    620         self.failUnless(b is b1)
     707        self.assertTrue(b is b1)
    621708
    622709    def test_irepeat_1char(self):
     
    626713        self.assertEqual(b, b"x"*100)
    627714        self.assertEqual(b, b1)
    628         self.failUnless(b is b1)
     715        self.assertTrue(b is b1)
    629716
    630717    def test_alloc(self):
    631718        b = bytearray()
    632719        alloc = b.__alloc__()
    633         self.assert_(alloc >= 0)
     720        self.assertTrue(alloc >= 0)
    634721        seq = [alloc]
    635722        for i in range(100):
    636723            b += b"x"
    637724            alloc = b.__alloc__()
    638             self.assert_(alloc >= len(b))
     725            self.assertTrue(alloc >= len(b))
    639726            if alloc not in seq:
    640727                seq.append(alloc)
     
    691778        self.assertEqual(b.pop(-2), ord('r'))
    692779        self.assertRaises(IndexError, lambda: b.pop(10))
    693         self.assertRaises(OverflowError, lambda: bytearray().pop())
     780        self.assertRaises(IndexError, lambda: bytearray().pop())
    694781        # test for issue #6846
    695782        self.assertEqual(bytearray(b'\xff').pop(), 0xff)
     
    718805        b.insert(1000, ord('i'))
    719806        self.assertEqual(b, b'mississippi')
    720         # allowed in 2.6
     807        # allowed in 2.x
    721808        #self.assertRaises(TypeError, lambda: b.insert(0, b'1'))
    722809        b = bytearray()
     
    738825        self.assertEqual(b, b"")
    739826        self.assertEqual(c, b"")
    740         self.assert_(b is not c)
     827        self.assertTrue(b is not c)
    741828        b += b"!"
    742829        self.assertEqual(c, b"")
     
    748835        self.assertEqual(b, b"")
    749836        self.assertEqual(c, b"")
    750         self.assert_(b is not c)
     837        self.assertTrue(b is not c)
    751838        b += b"!"
    752839        self.assertEqual(c, b"")
     
    755842        self.assertEqual(c, b"")
    756843
    757     # XXX memoryview not available
    758     def XXXtest_resize_forbidden(self):
     844    def test_resize_forbidden(self):
    759845        # #4509: can't resize a bytearray when there are buffer exports, even
    760846        # if it wouldn't reallocate the underlying buffer.
     
    768854        orig = b[:]
    769855        self.assertRaises(BufferError, resize, 11)
    770         self.assertEquals(b, orig)
     856        self.assertEqual(b, orig)
    771857        self.assertRaises(BufferError, resize, 9)
    772         self.assertEquals(b, orig)
     858        self.assertEqual(b, orig)
    773859        self.assertRaises(BufferError, resize, 0)
    774         self.assertEquals(b, orig)
     860        self.assertEqual(b, orig)
    775861        # Other operations implying resize
    776862        self.assertRaises(BufferError, b.pop, 0)
    777         self.assertEquals(b, orig)
     863        self.assertEqual(b, orig)
    778864        self.assertRaises(BufferError, b.remove, b[1])
    779         self.assertEquals(b, orig)
     865        self.assertEqual(b, orig)
    780866        def delitem():
    781867            del b[1]
    782868        self.assertRaises(BufferError, delitem)
    783         self.assertEquals(b, orig)
     869        self.assertEqual(b, orig)
    784870        # deleting a non-contiguous slice
    785871        def delslice():
    786872            b[1:-1:2] = b""
    787873        self.assertRaises(BufferError, delslice)
    788         self.assertEquals(b, orig)
     874        self.assertEqual(b, orig)
    789875
    790876    def test_empty_bytearray(self):
     
    800886    #
    801887
    802     def setUp(self):
    803         self.warning_filters = warnings.filters[:]
    804 
    805     def tearDown(self):
    806         warnings.filters = self.warning_filters
    807 
     888    @check_bytes_warnings
    808889    def test_repr_str(self):
    809         warnings.simplefilter('ignore', BytesWarning)
    810890        for f in str, repr:
    811891            self.assertEqual(f(bytearray()), "bytearray(b'')")
     
    846926        self.assertEqual(bytes(b"abc") <= b"ab", False)
    847927
     928    @test.test_support.requires_docstrings
    848929    def test_doc(self):
    849         self.failUnless(bytearray.__doc__ != None)
    850         self.failUnless(bytearray.__doc__.startswith("bytearray("), bytearray.__doc__)
    851         self.failUnless(bytes.__doc__ != None)
    852         self.failUnless(bytes.__doc__.startswith("bytes("), bytes.__doc__)
     930        self.assertIsNotNone(bytearray.__doc__)
     931        self.assertTrue(bytearray.__doc__.startswith("bytearray("), bytearray.__doc__)
     932        self.assertIsNotNone(bytes.__doc__)
     933        self.assertTrue(bytes.__doc__.startswith("bytes("), bytes.__doc__)
    853934
    854935    def test_from_bytearray(self):
     
    858939        self.assertEqual(b, bytearray(sample))
    859940
     941    @check_bytes_warnings
    860942    def test_to_str(self):
    861         warnings.simplefilter('ignore', BytesWarning)
    862943        self.assertEqual(str(b''), "b''")
    863944        self.assertEqual(str(b'x'), "b'x'")
     
    893974        c = b.translate(None, b'e')
    894975        self.assertEqual(c, b'hllo')
    895         self.assertRaises(TypeError, b.translate, b'a'*256, None)
    896         self.assertRaises(TypeError, ba.translate, b'a'*256, None)
     976        c = ba.translate(None, b'e')
     977        self.assertEqual(c, b'hllo')
     978        self.assertRaises(TypeError, b.translate, None, None)
     979        self.assertRaises(TypeError, ba.translate, None, None)
    897980
    898981    def test_split_bytearray(self):
     
    9321015            self.assertTrue(val is not newval,
    9331016                            methname+' returned self on a mutable object')
    934 
     1017        for expr in ('val.split()[0]', 'val.rsplit()[0]',
     1018                     'val.partition(".")[0]', 'val.rpartition(".")[2]',
     1019                     'val.splitlines()[0]', 'val.replace("", "")'):
     1020            newval = eval(expr)
     1021            self.assertEqual(val, newval)
     1022            self.assertTrue(val is not newval,
     1023                            expr+' returned val on a mutable object')
    9351024
    9361025class FixedStringTest(test.string_tests.BaseTest):
     
    9671056
    9681057    def test_basic(self):
    969         self.assert_(issubclass(ByteArraySubclass, bytearray))
    970         self.assert_(isinstance(ByteArraySubclass(), bytearray))
     1058        self.assertTrue(issubclass(ByteArraySubclass, bytearray))
     1059        self.assertIsInstance(ByteArraySubclass(), bytearray)
    9711060
    9721061        a, b = b"abcd", b"efgh"
     
    9741063
    9751064        # test comparison operators with subclass instances
    976         self.assert_(_a == _a)
    977         self.assert_(_a != _b)
    978         self.assert_(_a < _b)
    979         self.assert_(_a <= _b)
    980         self.assert_(_b >= _a)
    981         self.assert_(_b > _a)
    982         self.assert_(_a is not a)
     1065        self.assertTrue(_a == _a)
     1066        self.assertTrue(_a != _b)
     1067        self.assertTrue(_a < _b)
     1068        self.assertTrue(_a <= _b)
     1069        self.assertTrue(_b >= _a)
     1070        self.assertTrue(_b > _a)
     1071        self.assertTrue(_a is not a)
    9831072
    9841073        # test concat of subclass instances
     
    9881077
    9891078        # test repeat
    990         self.assert_(a*5 == _a*5)
     1079        self.assertTrue(a*5 == _a*5)
    9911080
    9921081    def test_join(self):
     
    9961085        s1 = ByteArraySubclass(b"abcd")
    9971086        s2 = bytearray().join([s1])
    998         self.assert_(s1 is not s2)
    999         self.assert_(type(s2) is bytearray, type(s2))
     1087        self.assertTrue(s1 is not s2)
     1088        self.assertTrue(type(s2) is bytearray, type(s2))
    10001089
    10011090        # Test reverse, calling join on subclass
    10021091        s3 = s1.join([b"abcd"])
    1003         self.assert_(type(s3) is bytearray)
     1092        self.assertTrue(type(s3) is bytearray)
    10041093
    10051094    def test_pickle(self):
Note: See TracChangeset for help on using the changeset viewer.