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

    r2 r391  
    22
    33import platform
    4 import test.test_support, unittest
     4import unittest
    55from test.test_support import fcmp, have_unicode, TESTFN, unlink, \
    6                               run_unittest, run_with_locale
     6                              run_unittest, check_py3k_warnings
     7import warnings
    78from operator import neg
    89
    9 import sys, warnings, cStringIO, random, fractions, UserDict
    10 warnings.filterwarnings("ignore", "hex../oct.. of negative int",
    11                         FutureWarning, __name__)
    12 warnings.filterwarnings("ignore", "integer argument expected",
    13                         DeprecationWarning, "unittest")
     10import sys, cStringIO, random, UserDict
    1411
    1512# count the number of test runs.
     
    9491        # str
    9592        self.assertRaises(TypeError, abs, 'a')
     93        # bool
     94        self.assertEqual(abs(True), 1)
     95        self.assertEqual(abs(False), 0)
     96        # other
     97        self.assertRaises(TypeError, abs)
     98        self.assertRaises(TypeError, abs, None)
     99        class AbsClass(object):
     100            def __abs__(self):
     101                return -5
     102        self.assertEqual(abs(AbsClass()), -5)
    96103
    97104    def test_all(self):
     
    104111        self.assertRaises(TypeError, all, [2, 4, 6], [])    # Too many args
    105112        self.assertEqual(all([]), True)                     # Empty iterator
     113        self.assertEqual(all([0, TestFailingBool()]), False)# Short-circuit
    106114        S = [50, 60]
    107115        self.assertEqual(all(x > 42 for x in S), True)
     
    113121        self.assertEqual(any([None, 4, None]), True)
    114122        self.assertRaises(RuntimeError, any, [None, TestFailingBool(), 6])
    115         self.assertRaises(RuntimeError, all, TestFailingIter())
     123        self.assertRaises(RuntimeError, any, TestFailingIter())
    116124        self.assertRaises(TypeError, any, 10)               # Non-iterable
    117125        self.assertRaises(TypeError, any)                   # No args
    118126        self.assertRaises(TypeError, any, [2, 4, 6], [])    # Too many args
    119127        self.assertEqual(any([]), False)                    # Empty iterator
     128        self.assertEqual(any([1, TestFailingBool()]), True) # Short-circuit
    120129        S = [40, 60, 30]
    121130        self.assertEqual(any(x > 42 for x in S), True)
     
    125134    def test_neg(self):
    126135        x = -sys.maxint-1
    127         self.assert_(isinstance(x, int))
     136        self.assertTrue(isinstance(x, int))
    128137        self.assertEqual(-x, sys.maxint+1)
    129138
     
    155164
    156165    def test_callable(self):
    157         self.assert_(callable(len))
     166        self.assertTrue(callable(len))
     167        self.assertFalse(callable("a"))
     168        self.assertTrue(callable(callable))
     169        self.assertTrue(callable(lambda x, y: x + y))
     170        self.assertFalse(callable(__builtins__))
    158171        def f(): pass
    159         self.assert_(callable(f))
    160         class C:
     172        self.assertTrue(callable(f))
     173
     174        class Classic:
    161175            def meth(self): pass
    162         self.assert_(callable(C))
    163         x = C()
    164         self.assert_(callable(x.meth))
    165         self.assert_(not callable(x))
    166         class D(C):
     176        self.assertTrue(callable(Classic))
     177        c = Classic()
     178        self.assertTrue(callable(c.meth))
     179        self.assertFalse(callable(c))
     180
     181        class NewStyle(object):
     182            def meth(self): pass
     183        self.assertTrue(callable(NewStyle))
     184        n = NewStyle()
     185        self.assertTrue(callable(n.meth))
     186        self.assertFalse(callable(n))
     187
     188        # Classic and new-style classes evaluate __call__() differently
     189        c.__call__ = None
     190        self.assertTrue(callable(c))
     191        del c.__call__
     192        self.assertFalse(callable(c))
     193        n.__call__ = None
     194        self.assertFalse(callable(n))
     195        del n.__call__
     196        self.assertFalse(callable(n))
     197
     198        class N2(object):
    167199            def __call__(self): pass
    168         y = D()
    169         self.assert_(callable(y))
    170         y()
     200        n2 = N2()
     201        self.assertTrue(callable(n2))
     202        class N3(N2): pass
     203        n3 = N3()
     204        self.assertTrue(callable(n3))
    171205
    172206    def test_chr(self):
     
    196230
    197231    def test_coerce(self):
    198         self.assert_(not fcmp(coerce(1, 1.1), (1.0, 1.1)))
     232        self.assertTrue(not fcmp(coerce(1, 1.1), (1.0, 1.1)))
    199233        self.assertEqual(coerce(1, 1L), (1L, 1L))
    200         self.assert_(not fcmp(coerce(1L, 1.1), (1.0, 1.1)))
     234        self.assertTrue(not fcmp(coerce(1L, 1.1), (1.0, 1.1)))
    201235        self.assertRaises(TypeError, coerce)
    202236        class BadNumber:
     
    237271        # dir() - local scope
    238272        local_var = 1
    239         self.assert_('local_var' in dir())
     273        self.assertIn('local_var', dir())
    240274
    241275        # dir(module)
    242276        import sys
    243         self.assert_('exit' in dir(sys))
     277        self.assertIn('exit', dir(sys))
    244278
    245279        # dir(module_with_invalid__dict__)
     
    251285
    252286        # dir(type)
    253         self.assert_("strip" in dir(str))
    254         self.assert_("__mro__" not in dir(str))
     287        self.assertIn("strip", dir(str))
     288        self.assertNotIn("__mro__", dir(str))
    255289
    256290        # dir(obj)
     
    261295                self.z = 9
    262296        f = Foo()
    263         self.assert_("y" in dir(f))
     297        self.assertIn("y", dir(f))
    264298
    265299        # dir(obj_no__dict__)
     
    267301            __slots__ = []
    268302        f = Foo()
    269         self.assert_("__repr__" in dir(f))
     303        self.assertIn("__repr__", dir(f))
    270304
    271305        # dir(obj_no__class__with__dict__)
     
    276310                self.bar = "wow"
    277311        f = Foo()
    278         self.assert_("__repr__" not in dir(f))
    279         self.assert_("bar" in dir(f))
     312        self.assertNotIn("__repr__", dir(f))
     313        self.assertIn("bar", dir(f))
    280314
    281315        # dir(obj_using __dir__)
     
    284318                return ["kan", "ga", "roo"]
    285319        f = Foo()
    286         self.assert_(dir(f) == ["ga", "kan", "roo"])
     320        self.assertTrue(dir(f) == ["ga", "kan", "roo"])
    287321
    288322        # dir(obj__dir__not_list)
     
    312346                         (sys.maxint+1, 0))
    313347
    314         self.assert_(not fcmp(divmod(3.25, 1.0), (3.0, 0.25)))
    315         self.assert_(not fcmp(divmod(-3.25, 1.0), (-4.0, 0.75)))
    316         self.assert_(not fcmp(divmod(3.25, -1.0), (-4.0, -0.75)))
    317         self.assert_(not fcmp(divmod(-3.25, -1.0), (3.0, -0.25)))
     348        self.assertTrue(not fcmp(divmod(3.25, 1.0), (3.0, 0.25)))
     349        self.assertTrue(not fcmp(divmod(-3.25, 1.0), (-4.0, 0.75)))
     350        self.assertTrue(not fcmp(divmod(3.25, -1.0), (-4.0, -0.75)))
     351        self.assertTrue(not fcmp(divmod(-3.25, -1.0), (3.0, -0.25)))
    318352
    319353        self.assertRaises(TypeError, divmod)
     
    420454    f.write('z = z*2\n')
    421455    f.close()
    422     execfile(TESTFN)
     456    with check_py3k_warnings(("execfile.. not supported in 3.x",
     457                              DeprecationWarning)):
     458        execfile(TESTFN)
    423459
    424460    def test_execfile(self):
     
    574610                    outp = filter(func, cls(inp))
    575611                    self.assertEqual(outp, exp)
    576                     self.assert_(not isinstance(outp, cls))
     612                    self.assertTrue(not isinstance(outp, cls))
    577613
    578614    def test_getattr(self):
    579615        import sys
    580         self.assert_(getattr(sys, 'stdout') is sys.stdout)
     616        self.assertTrue(getattr(sys, 'stdout') is sys.stdout)
    581617        self.assertRaises(TypeError, getattr, sys, 1)
    582618        self.assertRaises(TypeError, getattr, sys, 1, "foo")
     
    587623    def test_hasattr(self):
    588624        import sys
    589         self.assert_(hasattr(sys, 'stdout'))
     625        self.assertTrue(hasattr(sys, 'stdout'))
    590626        self.assertRaises(TypeError, hasattr, sys, 1)
    591627        self.assertRaises(TypeError, hasattr)
     
    618654            def __hash__(self):
    619655                return 2**100
    620         self.assertEquals(type(hash(X())), int)
     656        self.assertEqual(type(hash(X())), int)
    621657        class Y(object):
    622658            def __hash__(self):
    623659                return 2**100
    624         self.assertEquals(type(hash(Y())), int)
     660        self.assertEqual(type(hash(Y())), int)
    625661        class Z(long):
    626662            def __hash__(self):
    627663                return self
    628         self.assertEquals(hash(Z(42)), hash(42L))
     664        self.assertEqual(hash(Z(42)), hash(42L))
    629665
    630666    def test_hex(self):
     
    647683    # Test input() later, together with raw_input
    648684
     685    # test_int(): see test_int.py for int() tests.
     686
    649687    def test_intern(self):
    650688        self.assertRaises(TypeError, intern)
     
    652690        # therefore append the run counter
    653691        s = "never interned before " + str(numruns)
    654         self.assert_(intern(s) is s)
     692        self.assertTrue(intern(s) is s)
    655693        s2 = s.swapcase().swapcase()
    656         self.assert_(intern(s2) is s)
     694        self.assertTrue(intern(s2) is s)
    657695
    658696        # Subclasses of string can't be interned, because they
     
    660698        # We don't want them in the interned dict and if they aren't
    661699        # actually interned, we don't want to create the appearance
    662         # that they are by allowing intern() to succeeed.
     700        # that they are by allowing intern() to succeed.
    663701        class S(str):
    664702            def __hash__(self):
     
    695733        d = D()
    696734        e = E()
    697         self.assert_(isinstance(c, C))
    698         self.assert_(isinstance(d, C))
    699         self.assert_(not isinstance(e, C))
    700         self.assert_(not isinstance(c, D))
    701         self.assert_(not isinstance('foo', E))
     735        self.assertTrue(isinstance(c, C))
     736        self.assertTrue(isinstance(d, C))
     737        self.assertTrue(not isinstance(e, C))
     738        self.assertTrue(not isinstance(c, D))
     739        self.assertTrue(not isinstance('foo', E))
    702740        self.assertRaises(TypeError, isinstance, E, 'foo')
    703741        self.assertRaises(TypeError, isinstance)
     
    713751        d = D()
    714752        e = E()
    715         self.assert_(issubclass(D, C))
    716         self.assert_(issubclass(C, C))
    717         self.assert_(not issubclass(C, D))
     753        self.assertTrue(issubclass(D, C))
     754        self.assertTrue(issubclass(C, C))
     755        self.assertTrue(not issubclass(C, D))
    718756        self.assertRaises(TypeError, issubclass, 'foo', E)
    719757        self.assertRaises(TypeError, issubclass, E, 'foo')
     
    731769                raise ValueError
    732770        self.assertRaises(ValueError, len, BadSeq())
     771        self.assertRaises(TypeError, len, 2)
     772        class ClassicStyle: pass
     773        class NewStyle(object): pass
     774        self.assertRaises(AttributeError, len, ClassicStyle())
     775        self.assertRaises(TypeError, len, NewStyle())
    733776
    734777    def test_map(self):
     
    892935        self.assertRaises(StopIteration, next, it)
    893936        self.assertRaises(StopIteration, next, it)
    894         self.assertEquals(next(it, 42), 42)
     937        self.assertEqual(next(it, 42), 42)
    895938
    896939        class Iter(object):
     
    901944
    902945        it = iter(Iter())
    903         self.assertEquals(next(it, 42), 42)
     946        self.assertEqual(next(it, 42), 42)
    904947        self.assertRaises(StopIteration, next, it)
    905948
     
    909952
    910953        it = gen()
    911         self.assertEquals(next(it), 1)
     954        self.assertEqual(next(it), 1)
    912955        self.assertRaises(StopIteration, next, it)
    913         self.assertEquals(next(it, 42), 42)
     956        self.assertEqual(next(it, 42), 42)
    914957
    915958    def test_oct(self):
     
    10471090
    10481091        seq = range(a, b, c)
    1049         self.assert_(a in seq)
    1050         self.assert_(b not in seq)
     1092        self.assertIn(a, seq)
     1093        self.assertNotIn(b, seq)
    10511094        self.assertEqual(len(seq), 2)
    10521095
    10531096        seq = range(b, a, -c)
    1054         self.assert_(b in seq)
    1055         self.assert_(a not in seq)
     1097        self.assertIn(b, seq)
     1098        self.assertNotIn(a, seq)
    10561099        self.assertEqual(len(seq), 2)
    10571100
    10581101        seq = range(-a, -b, -c)
    1059         self.assert_(-a in seq)
    1060         self.assert_(-b not in seq)
     1102        self.assertIn(-a, seq)
     1103        self.assertNotIn(-b, seq)
    10611104        self.assertEqual(len(seq), 2)
    10621105
     
    10721115        self.assertRaises(RuntimeError, range, a, a + 1, badzero(1))
    10731116
    1074         # Reject floats when it would require PyLongs to represent.
    1075         # (smaller floats still accepted, but deprecated)
     1117        # Reject floats.
     1118        self.assertRaises(TypeError, range, 1., 1., 1.)
    10761119        self.assertRaises(TypeError, range, 1e100, 1e101, 1e101)
    10771120
     
    10811124        self.assertRaises(OverflowError, range, -sys.maxint, sys.maxint)
    10821125        self.assertRaises(OverflowError, range, 0, 2*sys.maxint)
     1126
     1127        bignum = 2*sys.maxint
     1128        smallnum = 42
     1129        # Old-style user-defined class with __int__ method
     1130        class I0:
     1131            def __init__(self, n):
     1132                self.n = int(n)
     1133            def __int__(self):
     1134                return self.n
     1135        self.assertEqual(range(I0(bignum), I0(bignum + 1)), [bignum])
     1136        self.assertEqual(range(I0(smallnum), I0(smallnum + 1)), [smallnum])
     1137
     1138        # New-style user-defined class with __int__ method
     1139        class I1(object):
     1140            def __init__(self, n):
     1141                self.n = int(n)
     1142            def __int__(self):
     1143                return self.n
     1144        self.assertEqual(range(I1(bignum), I1(bignum + 1)), [bignum])
     1145        self.assertEqual(range(I1(smallnum), I1(smallnum + 1)), [smallnum])
     1146
     1147        # New-style user-defined class with failing __int__ method
     1148        class IX(object):
     1149            def __int__(self):
     1150                raise RuntimeError
     1151        self.assertRaises(RuntimeError, range, IX())
     1152
     1153        # New-style user-defined class with invalid __int__ method
     1154        class IN(object):
     1155            def __int__(self):
     1156                return "not a number"
     1157        self.assertRaises(TypeError, range, IN())
     1158
     1159        # Exercise various combinations of bad arguments, to check
     1160        # refcounting logic
     1161        self.assertRaises(TypeError, range, 0.0)
     1162
     1163        self.assertRaises(TypeError, range, 0, 0.0)
     1164        self.assertRaises(TypeError, range, 0.0, 0)
     1165        self.assertRaises(TypeError, range, 0.0, 0.0)
     1166
     1167        self.assertRaises(TypeError, range, 0, 0, 1.0)
     1168        self.assertRaises(TypeError, range, 0, 0.0, 1)
     1169        self.assertRaises(TypeError, range, 0, 0.0, 1.0)
     1170        self.assertRaises(TypeError, range, 0.0, 0, 1)
     1171        self.assertRaises(TypeError, range, 0.0, 0, 1.0)
     1172        self.assertRaises(TypeError, range, 0.0, 0.0, 1)
     1173        self.assertRaises(TypeError, range, 0.0, 0.0, 1.0)
     1174
     1175
    10831176
    10841177    def test_input_and_raw_input(self):
     
    11401233
    11411234    def test_reduce(self):
    1142         self.assertEqual(reduce(lambda x, y: x+y, ['a', 'b', 'c'], ''), 'abc')
     1235        add = lambda x, y: x+y
     1236        self.assertEqual(reduce(add, ['a', 'b', 'c'], ''), 'abc')
    11431237        self.assertEqual(
    1144             reduce(lambda x, y: x+y, [['a', 'c'], [], ['d', 'w']], []),
     1238            reduce(add, [['a', 'c'], [], ['d', 'w']], []),
    11451239            ['a','c','d','w']
    11461240        )
     
    11501244            2432902008176640000L
    11511245        )
    1152         self.assertEqual(reduce(lambda x, y: x+y, Squares(10)), 285)
    1153         self.assertEqual(reduce(lambda x, y: x+y, Squares(10), 0), 285)
    1154         self.assertEqual(reduce(lambda x, y: x+y, Squares(0), 0), 0)
     1246        self.assertEqual(reduce(add, Squares(10)), 285)
     1247        self.assertEqual(reduce(add, Squares(10), 0), 285)
     1248        self.assertEqual(reduce(add, Squares(0), 0), 0)
    11551249        self.assertRaises(TypeError, reduce)
     1250        self.assertRaises(TypeError, reduce, 42)
    11561251        self.assertRaises(TypeError, reduce, 42, 42)
    11571252        self.assertRaises(TypeError, reduce, 42, 42, 42)
     1253        self.assertRaises(TypeError, reduce, None, range(5))
     1254        self.assertRaises(TypeError, reduce, add, 42)
    11581255        self.assertEqual(reduce(42, "1"), "1") # func is never called with one item
    11591256        self.assertEqual(reduce(42, "", "1"), "1") # func is never called with one item
    11601257        self.assertRaises(TypeError, reduce, 42, (42, 42))
     1258        self.assertRaises(TypeError, reduce, add, []) # arg 2 must not be empty sequence with no initial value
     1259        self.assertRaises(TypeError, reduce, add, "")
     1260        self.assertRaises(TypeError, reduce, add, ())
     1261        self.assertEqual(reduce(add, [], None), None)
     1262        self.assertEqual(reduce(add, [], 42), 42)
    11611263
    11621264        class BadSeq:
     
    12611363        self.assertRaises(TypeError, round, t, 0)
    12621364
     1365    # Some versions of glibc for alpha have a bug that affects
     1366    # float -> integer rounding (floor, ceil, rint, round) for
     1367    # values in the range [2**52, 2**53).  See:
     1368    #
     1369    #   http://sources.redhat.com/bugzilla/show_bug.cgi?id=5350
     1370    #
     1371    # We skip this test on Linux/alpha if it would fail.
     1372    linux_alpha = (platform.system().startswith('Linux') and
     1373                   platform.machine().startswith('alpha'))
     1374    system_round_bug = round(5e15+1) != 5e15+1
     1375    @unittest.skipIf(linux_alpha and system_round_bug,
     1376                     "test will fail;  failure is probably due to a "
     1377                     "buggy system round function")
    12631378    def test_round_large(self):
    12641379        # Issue #1869: integral floats should remain unchanged
     
    12951410                raise ValueError
    12961411        self.assertRaises(ValueError, sum, BadSeq())
     1412
     1413        empty = []
     1414        sum(([x] for x in range(10)), empty)
     1415        self.assertEqual(empty, [])
    12971416
    12981417    def test_type(self):
     
    13261445        return vars()
    13271446
     1447    class C_get_vars(object):
     1448        def getDict(self):
     1449            return {'a':2}
     1450        __dict__ = property(fget=getDict)
     1451
    13281452    def test_vars(self):
    13291453        self.assertEqual(set(vars()), set(dir()))
     
    13341458        self.assertRaises(TypeError, vars, 42, 42)
    13351459        self.assertRaises(TypeError, vars, 42)
     1460        self.assertEqual(vars(self.C_get_vars()), {'a':2})
    13361461
    13371462    def test_zip(self):
     
    14621587        #  there's no good place to put them
    14631588        x = object().__format__('')
    1464         self.assert_(x.startswith('<object object at'))
     1589        self.assertTrue(x.startswith('<object object at'))
    14651590
    14661591        # first argument to object.__format__ must be string
     
    14681593        self.assertRaises(TypeError, object().__format__, object())
    14691594        self.assertRaises(TypeError, object().__format__, None)
     1595
     1596        # --------------------------------------------------------------------
     1597        # Issue #7994: object.__format__ with a non-empty format string is
     1598        #  pending deprecated
     1599        def test_deprecated_format_string(obj, fmt_str, should_raise_warning):
     1600            with warnings.catch_warnings(record=True) as w:
     1601                warnings.simplefilter("always", PendingDeprecationWarning)
     1602                format(obj, fmt_str)
     1603            if should_raise_warning:
     1604                self.assertEqual(len(w), 1)
     1605                self.assertIsInstance(w[0].message, PendingDeprecationWarning)
     1606                self.assertIn('object.__format__ with a non-empty format '
     1607                              'string', str(w[0].message))
     1608            else:
     1609                self.assertEqual(len(w), 0)
     1610
     1611        fmt_strs = ['', 's', u'', u's']
     1612
     1613        class A:
     1614            def __format__(self, fmt_str):
     1615                return format('', fmt_str)
     1616
     1617        for fmt_str in fmt_strs:
     1618            test_deprecated_format_string(A(), fmt_str, False)
     1619
     1620        class B:
     1621            pass
     1622
     1623        class C(object):
     1624            pass
     1625
     1626        for cls in [object, B, C]:
     1627            for fmt_str in fmt_strs:
     1628                test_deprecated_format_string(cls(), fmt_str, len(fmt_str) != 0)
     1629        # --------------------------------------------------------------------
    14701630
    14711631        # make sure we can take a subclass of str as a format spec
     
    15261686        self.assertRaises(TypeError, sorted, data, None, lambda x,y: 0)
    15271687
     1688def _run_unittest(*args):
     1689    with check_py3k_warnings(
     1690            (".+ not supported in 3.x", DeprecationWarning),
     1691            (".+ is renamed to imp.reload", DeprecationWarning),
     1692            ("classic int division", DeprecationWarning)):
     1693        run_unittest(*args)
     1694
    15281695def test_main(verbose=None):
    15291696    test_classes = (BuiltinTest, TestSorted)
    15301697
    1531     run_unittest(*test_classes)
     1698    _run_unittest(*test_classes)
    15321699
    15331700    # verify reference counting
     
    15361703        counts = [None] * 5
    15371704        for i in xrange(len(counts)):
    1538             run_unittest(*test_classes)
     1705            _run_unittest(*test_classes)
    15391706            gc.collect()
    15401707            counts[i] = sys.gettotalrefcount()
Note: See TracChangeset for help on using the changeset viewer.