Fixes Issue #12059: Properly handle missing hash functions even when

the expected builtin modules are not present.

This includes a unittest for __get_builtin_constructor() in the face
of such an error.
This commit is contained in:
Gregory P. Smith 2011-05-14 15:15:49 -07:00
parent 3196efe1a5
commit 79aa5bf5ed
2 changed files with 41 additions and 20 deletions

View file

@ -118,6 +118,24 @@ class HashLibTestCase(unittest.TestCase):
else:
self.assertTrue(0 == "hashlib didn't reject bogus hash name")
def test_get_builtin_constructor(self):
get_builtin_constructor = hashlib.__dict__[
'__get_builtin_constructor']
self.assertRaises(ValueError, get_builtin_constructor, 'test')
try:
import _md5
except ImportError:
pass
# This forces an ImportError for "import _md5" statements
sys.modules['_md5'] = None
try:
self.assertRaises(ValueError, get_builtin_constructor, 'md5')
finally:
if '_md5' in locals():
sys.modules['_md5'] = _md5
else:
del sys.modules['_md5']
def test_hexdigest(self):
for name in self.supported_hash_names:
h = hashlib.new(name)