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

    r2 r391  
    11"""Unit tests for contextlib.py, and other context managers."""
    22
    3 
    43import sys
    5 import os
    6 import decimal
    74import tempfile
    85import unittest
    9 import threading
    106from contextlib import *  # Tests __all__
    117from test import test_support
     8try:
     9    import threading
     10except ImportError:
     11    threading = None
     12
    1213
    1314class ContextManagerTestCase(unittest.TestCase):
     
    3536            finally:
    3637                state.append(999)
    37         try:
     38        with self.assertRaises(ZeroDivisionError):
    3839            with woohoo() as x:
    3940                self.assertEqual(state, [1])
     
    4142                state.append(x)
    4243                raise ZeroDivisionError()
    43         except ZeroDivisionError:
    44             pass
    45         else:
    46             self.fail("Expected ZeroDivisionError")
    4744        self.assertEqual(state, [1, 42, 999])
    4845
     
    5451        ctx.__enter__()
    5552        # Calling __exit__ should not result in an exception
    56         self.failIf(ctx.__exit__(TypeError, TypeError("foo"), None))
     53        self.assertFalse(ctx.__exit__(TypeError, TypeError("foo"), None))
    5754
    5855    def test_contextmanager_trap_yield_after_throw(self):
     
    8683        self.assertEqual(state, [1, 42, 999])
    8784
    88     def test_contextmanager_attribs(self):
     85    def _create_contextmanager_attribs(self):
    8986        def attribs(**kw):
    9087            def decorate(func):
     
    9794        def baz(spam):
    9895            """Whee!"""
     96        return baz
     97
     98    def test_contextmanager_attribs(self):
     99        baz = self._create_contextmanager_attribs()
    99100        self.assertEqual(baz.__name__,'baz')
    100101        self.assertEqual(baz.foo, 'bar')
     102
     103    @unittest.skipIf(sys.flags.optimize >= 2,
     104                     "Docstrings are omitted with -O2 and above")
     105    def test_contextmanager_doc_attrib(self):
     106        baz = self._create_contextmanager_attribs()
    101107        self.assertEqual(baz.__doc__, "Whee!")
    102108
     
    136142            finally:
    137143                state.append(6)
    138         try:
     144        with self.assertRaises(ZeroDivisionError):
    139145            with nested(a(), b()) as (x, y):
    140146                state.append(x)
    141147                state.append(y)
    142                 1/0
    143         except ZeroDivisionError:
    144             self.assertEqual(state, [1, 4, 2, 5, 6, 3])
    145         else:
    146             self.fail("Didn't raise ZeroDivisionError")
     148                1 // 0
     149        self.assertEqual(state, [1, 4, 2, 5, 6, 3])
    147150
    148151    def test_nested_right_exception(self):
    149         state = []
    150152        @contextmanager
    151153        def a():
     
    159161                except:
    160162                    pass
    161         try:
     163        with self.assertRaises(ZeroDivisionError):
    162164            with nested(a(), b()) as (x, y):
    163                 1/0
    164         except ZeroDivisionError:
    165             self.assertEqual((x, y), (1, 2))
    166         except Exception:
    167             self.fail("Reraised wrong exception")
    168         else:
    169             self.fail("Didn't raise ZeroDivisionError")
     165                1 // 0
     166        self.assertEqual((x, y), (1, 2))
    170167
    171168    def test_nested_b_swallows(self):
     
    182179        try:
    183180            with nested(a(), b()):
    184                 1/0
     181                1 // 0
    185182        except ZeroDivisionError:
    186183            self.fail("Didn't swallow ZeroDivisionError")
     
    245242        x = C()
    246243        self.assertEqual(state, [])
    247         try:
     244        with self.assertRaises(ZeroDivisionError):
    248245            with closing(x) as y:
    249246                self.assertEqual(x, y)
    250                 1/0
    251         except ZeroDivisionError:
    252             self.assertEqual(state, [1])
    253         else:
    254             self.fail("Didn't raise ZeroDivisionError")
     247                1 // 0
     248        self.assertEqual(state, [1])
    255249
    256250class FileContextTestCase(unittest.TestCase):
     
    261255            f = None
    262256            with open(tfn, "w") as f:
    263                 self.failIf(f.closed)
     257                self.assertFalse(f.closed)
    264258                f.write("Booh\n")
    265             self.failUnless(f.closed)
     259            self.assertTrue(f.closed)
    266260            f = None
    267             try:
     261            with self.assertRaises(ZeroDivisionError):
    268262                with open(tfn, "r") as f:
    269                     self.failIf(f.closed)
     263                    self.assertFalse(f.closed)
    270264                    self.assertEqual(f.read(), "Booh\n")
    271                     1/0
    272             except ZeroDivisionError:
    273                 self.failUnless(f.closed)
    274             else:
    275                 self.fail("Didn't raise ZeroDivisionError")
     265                    1 // 0
     266            self.assertTrue(f.closed)
    276267        finally:
    277             try:
    278                 os.remove(tfn)
    279             except os.error:
    280                 pass
    281 
     268            test_support.unlink(tfn)
     269
     270@unittest.skipUnless(threading, 'Threading required for this test.')
    282271class LockContextTestCase(unittest.TestCase):
    283272
    284273    def boilerPlate(self, lock, locked):
    285         self.failIf(locked())
     274        self.assertFalse(locked())
    286275        with lock:
    287             self.failUnless(locked())
    288         self.failIf(locked())
    289         try:
     276            self.assertTrue(locked())
     277        self.assertFalse(locked())
     278        with self.assertRaises(ZeroDivisionError):
    290279            with lock:
    291                 self.failUnless(locked())
    292                 1/0
    293         except ZeroDivisionError:
    294             self.failIf(locked())
    295         else:
    296             self.fail("Didn't raise ZeroDivisionError")
     280                self.assertTrue(locked())
     281                1 // 0
     282        self.assertFalse(locked())
    297283
    298284    def testWithLock(self):
     
    332318# This is needed to make the test actually run under regrtest.py!
    333319def test_main():
    334     test_support.run_unittest(__name__)
     320    with test_support.check_warnings(("With-statements now directly support "
     321                                      "multiple context managers",
     322                                      DeprecationWarning)):
     323        test_support.run_unittest(__name__)
    335324
    336325if __name__ == "__main__":
Note: See TracChangeset for help on using the changeset viewer.