Replace catch_warnings with check_warnings when it makes sense. Use assertRaises context manager to simplify some tests.
diff --git a/Lib/test/test_contextlib.py b/Lib/test/test_contextlib.py
index 4d233da..42b90b6 100644
--- a/Lib/test/test_contextlib.py
+++ b/Lib/test/test_contextlib.py
@@ -1,14 +1,12 @@
"""Unit tests for contextlib.py, and other context managers."""
-
-import os
import sys
import tempfile
import unittest
import threading
from contextlib import * # Tests __all__
from test import test_support
-import warnings
+
class ContextManagerTestCase(unittest.TestCase):
@@ -34,16 +32,12 @@
yield 42
finally:
state.append(999)
- try:
+ with self.assertRaises(ZeroDivisionError):
with woohoo() as x:
self.assertEqual(state, [1])
self.assertEqual(x, 42)
state.append(x)
raise ZeroDivisionError()
- except ZeroDivisionError:
- pass
- else:
- self.fail("Expected ZeroDivisionError")
self.assertEqual(state, [1, 42, 999])
def test_contextmanager_no_reraise(self):
@@ -144,15 +138,12 @@
yield 5
finally:
state.append(6)
- try:
+ with self.assertRaises(ZeroDivisionError):
with nested(a(), b()) as (x, y):
state.append(x)
state.append(y)
- 1/0
- except ZeroDivisionError:
- self.assertEqual(state, [1, 4, 2, 5, 6, 3])
- else:
- self.fail("Didn't raise ZeroDivisionError")
+ 1 // 0
+ self.assertEqual(state, [1, 4, 2, 5, 6, 3])
def test_nested_right_exception(self):
@contextmanager
@@ -166,15 +157,10 @@
raise Exception()
except:
pass
- try:
+ with self.assertRaises(ZeroDivisionError):
with nested(a(), b()) as (x, y):
- 1/0
- except ZeroDivisionError:
- self.assertEqual((x, y), (1, 2))
- except Exception:
- self.fail("Reraised wrong exception")
- else:
- self.fail("Didn't raise ZeroDivisionError")
+ 1 // 0
+ self.assertEqual((x, y), (1, 2))
def test_nested_b_swallows(self):
@contextmanager
@@ -189,7 +175,7 @@
pass
try:
with nested(a(), b()):
- 1/0
+ 1 // 0
except ZeroDivisionError:
self.fail("Didn't swallow ZeroDivisionError")
@@ -252,14 +238,11 @@
state.append(1)
x = C()
self.assertEqual(state, [])
- try:
+ with self.assertRaises(ZeroDivisionError):
with closing(x) as y:
self.assertEqual(x, y)
- 1/0
- except ZeroDivisionError:
- self.assertEqual(state, [1])
- else:
- self.fail("Didn't raise ZeroDivisionError")
+ 1 // 0
+ self.assertEqual(state, [1])
class FileContextTestCase(unittest.TestCase):
@@ -272,20 +255,14 @@
f.write("Booh\n")
self.assertTrue(f.closed)
f = None
- try:
+ with self.assertRaises(ZeroDivisionError):
with open(tfn, "r") as f:
self.assertFalse(f.closed)
self.assertEqual(f.read(), "Booh\n")
- 1/0
- except ZeroDivisionError:
- self.assertTrue(f.closed)
- else:
- self.fail("Didn't raise ZeroDivisionError")
+ 1 // 0
+ self.assertTrue(f.closed)
finally:
- try:
- os.remove(tfn)
- except os.error:
- pass
+ test_support.unlink(tfn)
class LockContextTestCase(unittest.TestCase):
@@ -294,14 +271,11 @@
with lock:
self.assertTrue(locked())
self.assertFalse(locked())
- try:
+ with self.assertRaises(ZeroDivisionError):
with lock:
self.assertTrue(locked())
- 1/0
- except ZeroDivisionError:
- self.assertFalse(locked())
- else:
- self.fail("Didn't raise ZeroDivisionError")
+ 1 // 0
+ self.assertFalse(locked())
def testWithLock(self):
lock = threading.Lock()
@@ -339,8 +313,9 @@
# This is needed to make the test actually run under regrtest.py!
def test_main():
- with warnings.catch_warnings():
- warnings.simplefilter('ignore')
+ with test_support.check_warnings(("With-statements now directly support "
+ "multiple context managers",
+ DeprecationWarning)):
test_support.run_unittest(__name__)
if __name__ == "__main__":