It looks like crypt.crypt('', crypt.METHOD_CRYPT) returns None. This method must be excluded from crypt.methods. Attached patch should fix the issue, but I didn't try it on OpenBSD. Python 3.4-3.6 is affect, Python 2.7 is not affect (crypt.methods was introduced in Python 3). http://buildbot.python.org/all/builders/x86%20OpenBSD%203.5/builds/186/steps/test/logs/stdio test_saltedcrypt (test.test_crypt.CryptTestCase) ... ERROR ====================================================================== ERROR: test_saltedcrypt (test.test_crypt.CryptTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/python-builds/3.5.borja-openbsd-x86/build/Lib/test/test_crypt.py", line 23, in test_saltedcrypt self.assertEqual(len(pw), method.total_size) TypeError: object of type 'NoneType' has no len() ----------------------------------------------------------------------
Hum, the test now fails differently :-( ====================================================================== FAIL: test_methods (test.test_crypt.CryptTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/python-builds/3.x.borja-openbsd-x86/build/Lib/test/test_crypt.py", line 29, in test_methods self.assertTrue(len(crypt.methods) >= 1) AssertionError: False is not true
fixes test_crypt in 3.7. In other versions the test should be just skipped on OpenBSD. Blowfish is the only method supported on OpenBSD, but it was not supported by the Python's crypt module.