]> granicus.if.org Git - python/commitdiff
Sync test_typing.py with upstream git repo (typing.py was already synced).
authorGuido van Rossum <guido@python.org>
Mon, 18 Apr 2016 00:52:05 +0000 (17:52 -0700)
committerGuido van Rossum <guido@python.org>
Mon, 18 Apr 2016 00:52:05 +0000 (17:52 -0700)
Lib/test/test_typing.py

index f1c6e12b216301d9199cab75f36b3ad0e810983e..b39efcf01913d81ef3c41b3b2eabd1ed8bd646f4 100644 (file)
@@ -1,3 +1,4 @@
+import contextlib
 import pickle
 import re
 import sys
@@ -1309,6 +1310,21 @@ class CollectionsAbcTests(TestCase):
         assert len(MMB[KT, VT]()) == 0
 
 
+class OtherABCTests(TestCase):
+
+    @skipUnless(hasattr(typing, 'ContextManager'),
+                'requires typing.ContextManager')
+    def test_contextmanager(self):
+        @contextlib.contextmanager
+        def manager():
+            yield 42
+
+        cm = manager()
+        assert isinstance(cm, typing.ContextManager)
+        assert isinstance(cm, typing.ContextManager[int])
+        assert not isinstance(42, typing.ContextManager)
+
+
 class NamedTupleTests(TestCase):
 
     def test_basics(self):
@@ -1447,12 +1463,16 @@ class AllTests(TestCase):
         assert 'ValuesView' in a
         assert 'cast' in a
         assert 'overload' in a
+        if hasattr(contextlib, 'AbstractContextManager'):
+            assert 'ContextManager' in a
         # Check that io and re are not exported.
         assert 'io' not in a
         assert 're' not in a
         # Spot-check that stdlib modules aren't exported.
         assert 'os' not in a
         assert 'sys' not in a
+        # Check that Text is defined.
+        assert 'Text' in a
 
 
 if __name__ == '__main__':