Test suite failure if os_crypt backend unavailable
Created originally on Bitbucket by Anonymous
======================================================================
ERROR: des_crypt (os_crypt backend): test per-call crypt() fallback
----------------------------------------------------------------------
Traceback (most recent call last):
File "/builddir/build/BUILD/passlib-1.6.4/passlib/tests/utils.py", line 2065, in test_81_crypt_fallback
if self.find_crypt_replacement(fallback=True):
File "/builddir/build/BUILD/passlib-1.6.4/passlib/tests/utils.py", line 781, in find_crypt_replacement
idx = handler.backends.index("os_crypt") + 1
AttributeError: 'tuple' object has no attribute 'index'
======================================================================
ERROR: ldap_md5_crypt (os_crypt backend): test per-call crypt() fallback
----------------------------------------------------------------------
Traceback (most recent call last):
File "/builddir/build/BUILD/passlib-1.6.4/passlib/tests/utils.py", line 2065, in test_81_crypt_fallback
if self.find_crypt_replacement(fallback=True):
File "/builddir/build/BUILD/passlib-1.6.4/passlib/tests/utils.py", line 781, in find_crypt_replacement
idx = handler.backends.index("os_crypt") + 1
AttributeError: 'tuple' object has no attribute 'index'
======================================================================
ERROR: md5_crypt (os_crypt backend): test per-call crypt() fallback
----------------------------------------------------------------------
Traceback (most recent call last):
File "/builddir/build/BUILD/passlib-1.6.4/passlib/tests/utils.py", line 2065, in test_81_crypt_fallback
if self.find_crypt_replacement(fallback=True):
File "/builddir/build/BUILD/passlib-1.6.4/passlib/tests/utils.py", line 781, in find_crypt_replacement
idx = handler.backends.index("os_crypt") + 1
AttributeError: 'tuple' object has no attribute 'index'
======================================================================
ERROR: sha256_crypt (os_crypt backend): test per-call crypt() fallback
----------------------------------------------------------------------
Traceback (most recent call last):
File "/builddir/build/BUILD/passlib-1.6.4/passlib/tests/utils.py", line 2065, in test_81_crypt_fallback
if self.find_crypt_replacement(fallback=True):
File "/builddir/build/BUILD/passlib-1.6.4/passlib/tests/utils.py", line 781, in find_crypt_replacement
idx = handler.backends.index("os_crypt") + 1
AttributeError: 'tuple' object has no attribute 'index'
======================================================================
ERROR: sha512_crypt (os_crypt backend): test per-call crypt() fallback
----------------------------------------------------------------------
Traceback (most recent call last):
File "/builddir/build/BUILD/passlib-1.6.4/passlib/tests/utils.py", line 2065, in test_81_crypt_fallback
if self.find_crypt_replacement(fallback=True):
File "/builddir/build/BUILD/passlib-1.6.4/passlib/tests/utils.py", line 781, in find_crypt_replacement
idx = handler.backends.index("os_crypt") + 1
AttributeError: 'tuple' object has no attribute 'index'
----------------------------------------------------------------------
Ran 2391 tests in 186.628s
FAILED (errors=5)
This change fixes it for me:
--- passlib/tests/utils.py
+++ passlib/tests/utils.py
@@ -777,7 +777,7 @@
def find_crypt_replacement(cls, fallback=False):
"""find other backend which can be used to mock the os_crypt backend"""
handler = cls.handler
- if fallback:
+ if fallback and handler.has_backend("os_crypt"):
idx = handler.backends.index("os_crypt") + 1
else:
idx = 0