diff options
| author | Guido van Rossum <guido@dropbox.com> | 2016-05-18 15:36:16 (GMT) |
|---|---|---|
| committer | Guido van Rossum <guido@dropbox.com> | 2016-05-18 15:36:16 (GMT) |
| commit | c41c70fd9bcdd9424e4f5ffa55227641152c77c0 (patch) | |
| tree | e26d33959d5811f3fc79196adcfe709e3eb104bb /Lib/test | |
| parent | c9736b4bdf7524b1ba5052cbce8cfa0347b04ae0 (diff) | |
| parent | 1cea70f08c0b6aa3fccb246416b367e9afc1932a (diff) | |
| download | cpython-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.py | 25 |
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): |
