From 6aafbd433dbca6c11f41f1fc55d4304d2d98d6f5 Mon Sep 17 00:00:00 2001 From: Guido van Rossum Date: Sun, 17 Apr 2016 17:52:05 -0700 Subject: [PATCH] Sync test_typing.py with upstream git repo (typing.py was already synced). --- Lib/test/test_typing.py | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/Lib/test/test_typing.py b/Lib/test/test_typing.py index f1c6e12b216..b39efcf0191 100644 --- a/Lib/test/test_typing.py +++ b/Lib/test/test_typing.py @@ -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__':