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

    r2 r391  
    44"""Unit tests for abc.py."""
    55
    6 import unittest
     6import unittest, weakref
    77from test import test_support
    88
     
    1616        @abc.abstractmethod
    1717        def foo(self): pass
    18         self.assertEqual(foo.__isabstractmethod__, True)
     18        self.assertTrue(foo.__isabstractmethod__)
    1919        def bar(self): pass
    20         self.assertEqual(hasattr(bar, "__isabstractmethod__"), False)
     20        self.assertFalse(hasattr(bar, "__isabstractmethod__"))
    2121
    2222    def test_abstractproperty_basics(self):
    2323        @abc.abstractproperty
    2424        def foo(self): pass
    25         self.assertEqual(foo.__isabstractmethod__, True)
     25        self.assertTrue(foo.__isabstractmethod__)
    2626        def bar(self): pass
    27         self.assertEqual(hasattr(bar, "__isabstractmethod__"), False)
     27        self.assertFalse(hasattr(bar, "__isabstractmethod__"))
    2828
    2929        class C:
     
    4545            self.assertEqual(C.__abstractmethods__, set(["foo"]))
    4646            self.assertRaises(TypeError, C)  # because foo is abstract
    47             self.assert_(isabstract(C))
     47            self.assertTrue(isabstract(C))
    4848            class D(C):
    4949                def bar(self): pass  # concrete override of concrete
    5050            self.assertEqual(D.__abstractmethods__, set(["foo"]))
    5151            self.assertRaises(TypeError, D)  # because foo is still abstract
    52             self.assert_(isabstract(D))
     52            self.assertTrue(isabstract(D))
    5353            class E(D):
    5454                def foo(self): pass
    5555            self.assertEqual(E.__abstractmethods__, set())
    5656            E()  # now foo is concrete, too
    57             self.failIf(isabstract(E))
     57            self.assertFalse(isabstract(E))
    5858            class F(E):
    5959                @abstractthing
     
    6161            self.assertEqual(F.__abstractmethods__, set(["bar"]))
    6262            self.assertRaises(TypeError, F)  # because bar is abstract now
    63             self.assert_(isabstract(F))
     63            self.assertTrue(isabstract(F))
    6464
    6565    def test_subclass_oldstyle_class(self):
     
    8888            pass
    8989        b = B()
    90         self.assertEqual(issubclass(B, A), False)
    91         self.assertEqual(issubclass(B, (A,)), False)
    92         self.assertEqual(isinstance(b, A), False)
    93         self.assertEqual(isinstance(b, (A,)), False)
     90        self.assertFalse(issubclass(B, A))
     91        self.assertFalse(issubclass(B, (A,)))
     92        self.assertNotIsInstance(b, A)
     93        self.assertNotIsInstance(b, (A,))
    9494        A.register(B)
    95         self.assertEqual(issubclass(B, A), True)
    96         self.assertEqual(issubclass(B, (A,)), True)
    97         self.assertEqual(isinstance(b, A), True)
    98         self.assertEqual(isinstance(b, (A,)), True)
     95        self.assertTrue(issubclass(B, A))
     96        self.assertTrue(issubclass(B, (A,)))
     97        self.assertIsInstance(b, A)
     98        self.assertIsInstance(b, (A,))
    9999        class C(B):
    100100            pass
    101101        c = C()
    102         self.assertEqual(issubclass(C, A), True)
    103         self.assertEqual(issubclass(C, (A,)), True)
    104         self.assertEqual(isinstance(c, A), True)
    105         self.assertEqual(isinstance(c, (A,)), True)
     102        self.assertTrue(issubclass(C, A))
     103        self.assertTrue(issubclass(C, (A,)))
     104        self.assertIsInstance(c, A)
     105        self.assertIsInstance(c, (A,))
    106106
    107107    def test_isinstance_invalidation(self):
     
    111111            pass
    112112        b = B()
    113         self.assertEqual(isinstance(b, A), False)
    114         self.assertEqual(isinstance(b, (A,)), False)
     113        self.assertFalse(isinstance(b, A))
     114        self.assertFalse(isinstance(b, (A,)))
    115115        A.register(B)
    116         self.assertEqual(isinstance(b, A), True)
    117         self.assertEqual(isinstance(b, (A,)), True)
     116        self.assertTrue(isinstance(b, A))
     117        self.assertTrue(isinstance(b, (A,)))
    118118
    119119    def test_registration_builtins(self):
     
    121121            __metaclass__ = abc.ABCMeta
    122122        A.register(int)
    123         self.assertEqual(isinstance(42, A), True)
    124         self.assertEqual(isinstance(42, (A,)), True)
    125         self.assertEqual(issubclass(int, A), True)
    126         self.assertEqual(issubclass(int, (A,)), True)
     123        self.assertIsInstance(42, A)
     124        self.assertIsInstance(42, (A,))
     125        self.assertTrue(issubclass(int, A))
     126        self.assertTrue(issubclass(int, (A,)))
    127127        class B(A):
    128128            pass
    129129        B.register(basestring)
    130         self.assertEqual(isinstance("", A), True)
    131         self.assertEqual(isinstance("", (A,)), True)
    132         self.assertEqual(issubclass(str, A), True)
    133         self.assertEqual(issubclass(str, (A,)), True)
     130        self.assertIsInstance("", A)
     131        self.assertIsInstance("", (A,))
     132        self.assertTrue(issubclass(str, A))
     133        self.assertTrue(issubclass(str, (A,)))
    134134
    135135    def test_registration_edge_cases(self):
     
    150150        C.register(B)  # ok
    151151
     152    def test_register_non_class(self):
     153        class A(object):
     154            __metaclass__ = abc.ABCMeta
     155        self.assertRaisesRegexp(TypeError, "Can only register classes",
     156                                A.register, 4)
     157
    152158    def test_registration_transitiveness(self):
    153159        class A:
    154160            __metaclass__ = abc.ABCMeta
    155         self.failUnless(issubclass(A, A))
    156         self.failUnless(issubclass(A, (A,)))
     161        self.assertTrue(issubclass(A, A))
     162        self.assertTrue(issubclass(A, (A,)))
    157163        class B:
    158164            __metaclass__ = abc.ABCMeta
    159         self.failIf(issubclass(A, B))
    160         self.failIf(issubclass(A, (B,)))
    161         self.failIf(issubclass(B, A))
    162         self.failIf(issubclass(B, (A,)))
     165        self.assertFalse(issubclass(A, B))
     166        self.assertFalse(issubclass(A, (B,)))
     167        self.assertFalse(issubclass(B, A))
     168        self.assertFalse(issubclass(B, (A,)))
    163169        class C:
    164170            __metaclass__ = abc.ABCMeta
     
    166172        class B1(B):
    167173            pass
    168         self.failUnless(issubclass(B1, A))
    169         self.failUnless(issubclass(B1, (A,)))
     174        self.assertTrue(issubclass(B1, A))
     175        self.assertTrue(issubclass(B1, (A,)))
    170176        class C1(C):
    171177            pass
    172178        B1.register(C1)
    173         self.failIf(issubclass(C, B))
    174         self.failIf(issubclass(C, (B,)))
    175         self.failIf(issubclass(C, B1))
    176         self.failIf(issubclass(C, (B1,)))
    177         self.failUnless(issubclass(C1, A))
    178         self.failUnless(issubclass(C1, (A,)))
    179         self.failUnless(issubclass(C1, B))
    180         self.failUnless(issubclass(C1, (B,)))
    181         self.failUnless(issubclass(C1, B1))
    182         self.failUnless(issubclass(C1, (B1,)))
     179        self.assertFalse(issubclass(C, B))
     180        self.assertFalse(issubclass(C, (B,)))
     181        self.assertFalse(issubclass(C, B1))
     182        self.assertFalse(issubclass(C, (B1,)))
     183        self.assertTrue(issubclass(C1, A))
     184        self.assertTrue(issubclass(C1, (A,)))
     185        self.assertTrue(issubclass(C1, B))
     186        self.assertTrue(issubclass(C1, (B,)))
     187        self.assertTrue(issubclass(C1, B1))
     188        self.assertTrue(issubclass(C1, (B1,)))
    183189        C1.register(int)
    184190        class MyInt(int):
    185191            pass
    186         self.failUnless(issubclass(MyInt, A))
    187         self.failUnless(issubclass(MyInt, (A,)))
    188         self.failUnless(isinstance(42, A))
    189         self.failUnless(isinstance(42, (A,)))
     192        self.assertTrue(issubclass(MyInt, A))
     193        self.assertTrue(issubclass(MyInt, (A,)))
     194        self.assertIsInstance(42, A)
     195        self.assertIsInstance(42, (A,))
    190196
    191197    def test_all_new_methods_are_called(self):
     
    203209        self.assertEqual(B.counter, 1)
    204210
     211    def test_cache_leak(self):
     212        # See issue #2521.
     213        class A(object):
     214            __metaclass__ = abc.ABCMeta
     215            @abc.abstractmethod
     216            def f(self):
     217                pass
     218        class C(A):
     219            def f(self):
     220                A.f(self)
     221        r = weakref.ref(C)
     222        # Trigger cache.
     223        C().f()
     224        del C
     225        test_support.gc_collect()
     226        self.assertEqual(r(), None)
    205227
    206228def test_main():
Note: See TracChangeset for help on using the changeset viewer.