summaryrefslogtreecommitdiffstats
path: root/Lib/test
diff options
context:
space:
mode:
authorGuido van Rossum <guido@dropbox.com>2016-05-18 15:36:16 (GMT)
committerGuido van Rossum <guido@dropbox.com>2016-05-18 15:36:16 (GMT)
commitc41c70fd9bcdd9424e4f5ffa55227641152c77c0 (patch)
treee26d33959d5811f3fc79196adcfe709e3eb104bb /Lib/test
parentc9736b4bdf7524b1ba5052cbce8cfa0347b04ae0 (diff)
parent1cea70f08c0b6aa3fccb246416b367e9afc1932a (diff)
downloadcpython-c41c70fd9bcdd9424e4f5ffa55227641152c77c0.zip
cpython-c41c70fd9bcdd9424e4f5ffa55227641152c77c0.tar.gz
cpython-c41c70fd9bcdd9424e4f5ffa55227641152c77c0.tar.bz2
Fix #27014 -- infinite recursion using typing.py. (Merge 3.5 -> 3.6.)
Diffstat (limited to 'Lib/test')
-rw-r--r--Lib/test/test_typing.py25
1 files changed, 22 insertions, 3 deletions
diff --git a/Lib/test/test_typing.py b/Lib/test/test_typing.py
index 90bad77..f9e54b2 100644
--- a/Lib/test/test_typing.py
+++ b/Lib/test/test_typing.py
@@ -1,4 +1,5 @@
import contextlib
+import collections
import pickle
import re
import sys
@@ -1218,13 +1219,17 @@ class CollectionsAbcTests(BaseTestCase):
with self.assertRaises(TypeError):
typing.List[int]()
- def test_list_subclass_instantiation(self):
+ def test_list_subclass(self):
class MyList(typing.List[int]):
pass
a = MyList()
self.assertIsInstance(a, MyList)
+ self.assertIsInstance(a, typing.Sequence)
+
+ self.assertIsSubclass(MyList, list)
+ self.assertNotIsSubclass(list, MyList)
def test_no_dict_instantiation(self):
with self.assertRaises(TypeError):
@@ -1234,13 +1239,17 @@ class CollectionsAbcTests(BaseTestCase):
with self.assertRaises(TypeError):
typing.Dict[str, int]()
- def test_dict_subclass_instantiation(self):
+ def test_dict_subclass(self):
class MyDict(typing.Dict[str, int]):
pass
d = MyDict()
self.assertIsInstance(d, MyDict)
+ self.assertIsInstance(d, typing.MutableMapping)
+
+ self.assertIsSubclass(MyDict, dict)
+ self.assertNotIsSubclass(dict, MyDict)
def test_no_defaultdict_instantiation(self):
with self.assertRaises(TypeError):
@@ -1250,7 +1259,7 @@ class CollectionsAbcTests(BaseTestCase):
with self.assertRaises(TypeError):
typing.DefaultDict[str, int]()
- def test_defaultdict_subclass_instantiation(self):
+ def test_defaultdict_subclass(self):
class MyDefDict(typing.DefaultDict[str, int]):
pass
@@ -1258,6 +1267,9 @@ class CollectionsAbcTests(BaseTestCase):
dd = MyDefDict()
self.assertIsInstance(dd, MyDefDict)
+ self.assertIsSubclass(MyDefDict, collections.defaultdict)
+ self.assertNotIsSubclass(collections.defaultdict, MyDefDict)
+
def test_no_set_instantiation(self):
with self.assertRaises(TypeError):
typing.Set()
@@ -1338,6 +1350,13 @@ class CollectionsAbcTests(BaseTestCase):
self.assertEqual(len(MMB[str, str]()), 0)
self.assertEqual(len(MMB[KT, VT]()), 0)
+ self.assertNotIsSubclass(dict, MMA)
+ self.assertNotIsSubclass(dict, MMB)
+
+ self.assertIsSubclass(MMA, typing.Mapping)
+ self.assertIsSubclass(MMB, typing.Mapping)
+ self.assertIsSubclass(MMC, typing.Mapping)
+
class OtherABCTests(BaseTestCase):