[Python-checkins] cpython (merge 3.4 -> default): Issue #18473: Fixed pickle compatibility tests for optional modules.
serhiy.storchaka
python-checkins at python.org
Tue Mar 31 15:58:21 CEST 2015
https://hg.python.org/cpython/rev/29b2b2d8e36f
changeset: 95328:29b2b2d8e36f
parent: 95326:ec6c812fbc1f
parent: 95327:5c5eb374e296
user: Serhiy Storchaka <storchaka at gmail.com>
date: Tue Mar 31 16:49:48 2015 +0300
summary:
Issue #18473: Fixed pickle compatibility tests for optional modules.
Added WindowsError to compatibility mappings.
files:
Lib/_compat_pickle.py | 7 +++++
Lib/test/test_pickle.py | 35 ++++++++++++++++++++--------
2 files changed, 32 insertions(+), 10 deletions(-)
diff --git a/Lib/_compat_pickle.py b/Lib/_compat_pickle.py
--- a/Lib/_compat_pickle.py
+++ b/Lib/_compat_pickle.py
@@ -141,6 +141,13 @@
"ZeroDivisionError",
)
+try:
+ WindowsError
+except NameError:
+ pass
+else:
+ PYTHON2_EXCEPTIONS += ("WindowsError",)
+
for excname in PYTHON2_EXCEPTIONS:
NAME_MAPPING[("exceptions", excname)] = ("builtins", excname)
diff --git a/Lib/test/test_pickle.py b/Lib/test/test_pickle.py
--- a/Lib/test/test_pickle.py
+++ b/Lib/test/test_pickle.py
@@ -240,7 +240,16 @@
try:
return sys.modules[module]
except KeyError:
- __import__(module)
+ try:
+ __import__(module)
+ except AttributeError as exc:
+ if support.verbose:
+ print("Can't import module %r: %s" % (module, exc))
+ raise ImportError
+ except ImportError as exc:
+ if support.verbose:
+ print(exc)
+ raise
return sys.modules[module]
def getattribute(module, name):
@@ -264,18 +273,16 @@
for module in modules:
try:
getmodule(module)
- except ImportError as exc:
- if support.verbose:
- print(exc)
+ except ImportError:
+ pass
def test_import_mapping(self):
for module3, module2 in REVERSE_IMPORT_MAPPING.items():
with self.subTest((module3, module2)):
try:
getmodule(module3)
- except ImportError as exc:
- if support.verbose:
- print(exc)
+ except ImportError:
+ pass
if module3[:1] != '_':
self.assertIn(module2, IMPORT_MAPPING)
self.assertEqual(IMPORT_MAPPING[module2], module3)
@@ -283,14 +290,19 @@
def test_name_mapping(self):
for (module3, name3), (module2, name2) in REVERSE_NAME_MAPPING.items():
with self.subTest(((module3, name3), (module2, name2))):
- attr = getattribute(module3, name3)
if (module2, name2) == ('exceptions', 'OSError'):
+ attr = getattribute(module3, name3)
self.assertTrue(issubclass(attr, OSError))
else:
module, name = mapping(module2, name2)
if module3[:1] != '_':
self.assertEqual((module, name), (module3, name3))
- self.assertEqual(getattribute(module, name), attr)
+ try:
+ attr = getattribute(module3, name3)
+ except ImportError:
+ pass
+ else:
+ self.assertEqual(getattribute(module, name), attr)
def test_reverse_import_mapping(self):
for module2, module3 in IMPORT_MAPPING.items():
@@ -315,7 +327,10 @@
def test_reverse_name_mapping(self):
for (module2, name2), (module3, name3) in NAME_MAPPING.items():
with self.subTest(((module2, name2), (module3, name3))):
- attr = getattribute(module3, name3)
+ try:
+ attr = getattribute(module3, name3)
+ except ImportError:
+ pass
module, name = reverse_mapping(module3, name3)
if (module2, name2, module3, name3) not in ALT_NAME_MAPPING:
self.assertEqual((module, name), (module2, name2))
--
Repository URL: https://hg.python.org/cpython
More information about the Python-checkins
mailing list