14 tests fails with "django.core.exceptions.ImproperlyConfigured: The SECRET_KEY setting must not be empty."
When packaging passlib for openSUSE, we run the test suite and 14 tests fail:
[ 171s] __________________ DjangoBehaviorTest.test_available_schemes ___________________
[ 171s]
[ 171s] self = <passlib.tests.test_ext_django.DjangoBehaviorTest testMethod=test_available_schemes>
[ 171s]
[ 171s] def test_available_schemes(self):
[ 171s] """
[ 171s] run a bunch of subtests for each hasher available in the default django setup
[ 171s] (as determined by reading self.context)
[ 171s] """
[ 171s] for scheme in self.context.schemes():
[ 171s] with self.subTest(scheme=scheme):
[ 171s] > self._do_test_available_scheme(scheme)
[ 171s]
[ 171s] passlib/tests/test_ext_django.py:707:
[ 171s] _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
[ 171s] passlib/tests/test_ext_django.py:790: in _do_test_available_scheme
[ 171s] self.assert_valid_password(user, hash)
[ 171s] passlib/tests/test_ext_django.py:435: in assert_valid_password
[ 171s] self.assertEqual(user.password, hash)
[ 171s] E AssertionError: 'pbkdf2_sha256$260000$d1TkjOgyD4m7GhqxQI0bkW$JZeVGBR5eYRI4cA1lG[22 chars]q6s=' != 'pbkdf2_sha256$260000$WNiU6tO1moWh$l5YsPqDWWnDf0TBZ38H3Hu5hpG9l8AOODt9I8SDSfWk='
[ 171s] E - pbkdf2_sha256$260000$d1TkjOgyD4m7GhqxQI0bkW$JZeVGBR5eYRI4cA1lGM90vuyr8rt9R9emYoFC/p/q6s=
[ 171s] E + pbkdf2_sha256$260000$WNiU6tO1moWh$l5YsPqDWWnDf0TBZ38H3Hu5hpG9l8AOODt9I8SDSfWk=
[ 171s] ------------------------------ Captured log call -------------------------------
[ 171s] WARNING passlib.tests.test_ext_django.DjangoBehaviorTest.test_available_schemes:utils.py:684 subtest failed: (scheme='django_pbkdf2_sha256'): AssertionError: "'pbkdf2_sha256$260000$d1TkjOgyD4m7GhqxQI0bkW$JZeVGBR5eYRI4cA1lG[22 chars]q6s=' != 'pbkdf2_sha256$260000$WNiU6tO1moWh$l5YsPqDWWnDf0TBZ38H3Hu5hpG9l8AOODt9I8SDSfWk='\n- pbkdf2_sha256$260000$d1TkjOgyD4m7GhqxQI0bkW$JZeVGBR5eYRI4cA1lGM90vuyr8rt9R9emYoFC/p/q6s=\n+ pbkdf2_sha256$260000$WNiU6tO1moWh$l5YsPqDWWnDf0TBZ38H3Hu5hpG9l8AOODt9I8SDSfWk=\n"
[ 171s] _________________ ExtensionBehaviorTest.test_available_schemes _________________
[ 171s]
[ 171s] self = <passlib.tests.test_ext_django.ExtensionBehaviorTest testMethod=test_available_schemes>
[ 171s]
[ 171s] def setUp(self):
[ 171s] super(ExtensionBehaviorTest, self).setUp()
[ 171s]
[ 171s] # always load extension before each test
[ 171s] > self.load_extension(PASSLIB_CONFIG=self.config)
[ 171s]
[ 171s] passlib/tests/test_ext_django.py:850:
[ 171s] _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
[ 171s] passlib/tests/test_ext_django.py:313: in load_extension
[ 171s] import passlib.ext.django.models
[ 171s] passlib/ext/django/models.py:32: in <module>
[ 171s] adapter.load_model()
[ 171s] passlib/ext/django/utils.py:792: in load_model
[ 171s] self.install_patch()
[ 171s] passlib/ext/django/utils.py:736: in install_patch
[ 171s] manager.patch(target, value)
[ 171s] passlib/ext/django/utils.py:1194: in patch
[ 171s] current = self._get_path(path)
[ 171s] passlib/ext/django/utils.py:1153: in _get_path
[ 171s] obj, attr = self._import_path(key)
[ 171s] passlib/ext/django/utils.py:1138: in _import_path
[ 171s] obj = __import__(name, fromlist=[attr], level=0)
[ 171s] /usr/lib/python3.6/site-packages/django/contrib/auth/forms.py:11: in <module>
[ 171s] from django.contrib.auth.tokens import default_token_generator
[ 171s] /usr/lib/python3.6/site-packages/django/contrib/auth/tokens.py:117: in <module>
[ 171s] default_token_generator = PasswordResetTokenGenerator()
[ 171s] /usr/lib/python3.6/site-packages/django/contrib/auth/tokens.py:18: in __init__
[ 171s] self.secret = self.secret or settings.SECRET_KEY
[ 171s] _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
[ 171s]
[ 171s] self = <LazySettings "None">, name = 'SECRET_KEY'
[ 171s]
[ 171s] def __getattr__(self, name):
[ 171s] """Return the value of a setting and cache it in self.__dict__."""
[ 171s] if self._wrapped is empty:
[ 171s] self._setup(name)
[ 171s] val = getattr(self._wrapped, name)
[ 171s]
[ 171s] # Special case some settings which require further modification.
[ 171s] # This is done here for performance reasons so the modified value is cached.
[ 171s] if name in {'MEDIA_URL', 'STATIC_URL'} and val is not None:
[ 171s] val = self._add_script_prefix(val)
[ 171s] elif name == 'SECRET_KEY' and not val:
[ 171s] > raise ImproperlyConfigured("The SECRET_KEY setting must not be empty.")
[ 171s] E django.core.exceptions.ImproperlyConfigured: The SECRET_KEY setting must not be empty.
[ 171s]
[ 171s] /usr/lib/python3.6/site-packages/django/conf/__init__.py:90: ImproperlyConfigured
[ 171s] ------------------------------ Captured log call -------------------------------
[ 171s] WARNING passlib.ext.django.utils.DjangoContextAdapter:utils.py:771 reverting partial monkeypatching of django...
[ 171s] _________________ ExtensionBehaviorTest.test_default_algorithm _________________
[ 171s]
[ 171s] self = <passlib.tests.test_ext_django.ExtensionBehaviorTest testMethod=test_default_algorithm>
[ 171s]
[ 171s] def setUp(self):
[ 171s] super(ExtensionBehaviorTest, self).setUp()
[ 171s]
[ 171s] # always load extension before each test
[ 171s] > self.load_extension(PASSLIB_CONFIG=self.config)
[ 171s]
[ 171s] passlib/tests/test_ext_django.py:850:
[ 171s] _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
[ 171s] passlib/tests/test_ext_django.py:313: in load_extension
[ 171s] import passlib.ext.django.models
[ 171s] passlib/ext/django/models.py:32: in <module>
[ 171s] adapter.load_model()
[ 171s] passlib/ext/django/utils.py:792: in load_model
[ 171s] self.install_patch()
[ 171s] passlib/ext/django/utils.py:736: in install_patch
[ 171s] manager.patch(target, value)
[ 171s] passlib/ext/django/utils.py:1194: in patch
[ 171s] current = self._get_path(path)
[ 171s] passlib/ext/django/utils.py:1153: in _get_path
[ 171s] obj, attr = self._import_path(key)
[ 171s] passlib/ext/django/utils.py:1138: in _import_path
[ 171s] obj = __import__(name, fromlist=[attr], level=0)
[ 171s] /usr/lib/python3.6/site-packages/django/contrib/auth/forms.py:11: in <module>
[ 171s] from django.contrib.auth.tokens import default_token_generator
[ 171s] /usr/lib/python3.6/site-packages/django/contrib/auth/tokens.py:117: in <module>
[ 171s] default_token_generator = PasswordResetTokenGenerator()
[ 171s] /usr/lib/python3.6/site-packages/django/contrib/auth/tokens.py:18: in __init__
[ 171s] self.secret = self.secret or settings.SECRET_KEY
[ 171s] _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
[ 171s]
[ 171s] self = <LazySettings "None">, name = 'SECRET_KEY'
[ 171s]
[ 171s] def __getattr__(self, name):
[ 171s] """Return the value of a setting and cache it in self.__dict__."""
[ 171s] if self._wrapped is empty:
[ 171s] self._setup(name)
[ 171s] val = getattr(self._wrapped, name)
[ 171s]
[ 171s] # Special case some settings which require further modification.
[ 171s] # This is done here for performance reasons so the modified value is cached.
[ 171s] if name in {'MEDIA_URL', 'STATIC_URL'} and val is not None:
[ 171s] val = self._add_script_prefix(val)
[ 171s] elif name == 'SECRET_KEY' and not val:
[ 171s] > raise ImproperlyConfigured("The SECRET_KEY setting must not be empty.")
[ 171s] E django.core.exceptions.ImproperlyConfigured: The SECRET_KEY setting must not be empty.
[ 171s]
[ 171s] /usr/lib/python3.6/site-packages/django/conf/__init__.py:90: ImproperlyConfigured
[ 171s] ------------------------------ Captured log call -------------------------------
[ 171s] WARNING passlib.ext.django.utils.DjangoContextAdapter:utils.py:771 reverting partial monkeypatching of django...
[ 171s] _________________ ExtensionBehaviorTest.test_empty_hash_value __________________
[ 171s]
[ 171s] self = <passlib.tests.test_ext_django.ExtensionBehaviorTest testMethod=test_empty_hash_value>
[ 171s]
[ 171s] def setUp(self):
[ 171s] super(ExtensionBehaviorTest, self).setUp()
[ 171s]
[ 171s] # always load extension before each test
[ 171s] > self.load_extension(PASSLIB_CONFIG=self.config)
[ 171s]
[ 171s] passlib/tests/test_ext_django.py:850:
[ 171s] _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
[ 171s] passlib/tests/test_ext_django.py:313: in load_extension
[ 171s] import passlib.ext.django.models
[ 171s] passlib/ext/django/models.py:32: in <module>
[ 171s] adapter.load_model()
[ 171s] passlib/ext/django/utils.py:792: in load_model
[ 171s] self.install_patch()
[ 171s] passlib/ext/django/utils.py:736: in install_patch
[ 171s] manager.patch(target, value)
[ 171s] passlib/ext/django/utils.py:1194: in patch
[ 171s] current = self._get_path(path)
[ 171s] passlib/ext/django/utils.py:1153: in _get_path
[ 171s] obj, attr = self._import_path(key)
[ 171s] passlib/ext/django/utils.py:1138: in _import_path
[ 171s] obj = __import__(name, fromlist=[attr], level=0)
[ 171s] /usr/lib/python3.6/site-packages/django/contrib/auth/forms.py:11: in <module>
[ 171s] from django.contrib.auth.tokens import default_token_generator
[ 171s] /usr/lib/python3.6/site-packages/django/contrib/auth/tokens.py:117: in <module>
[ 171s] default_token_generator = PasswordResetTokenGenerator()
[ 171s] /usr/lib/python3.6/site-packages/django/contrib/auth/tokens.py:18: in __init__
[ 171s] self.secret = self.secret or settings.SECRET_KEY
[ 171s] _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
[ 171s]
[ 171s] self = <LazySettings "None">, name = 'SECRET_KEY'
[ 171s]
[ 171s] def __getattr__(self, name):
[ 171s] """Return the value of a setting and cache it in self.__dict__."""
[ 171s] if self._wrapped is empty:
[ 171s] self._setup(name)
[ 171s] val = getattr(self._wrapped, name)
[ 171s]
[ 171s] # Special case some settings which require further modification.
[ 171s] # This is done here for performance reasons so the modified value is cached.
[ 171s] if name in {'MEDIA_URL', 'STATIC_URL'} and val is not None:
[ 171s] val = self._add_script_prefix(val)
[ 171s] elif name == 'SECRET_KEY' and not val:
[ 171s] > raise ImproperlyConfigured("The SECRET_KEY setting must not be empty.")
[ 171s] E django.core.exceptions.ImproperlyConfigured: The SECRET_KEY setting must not be empty.
[ 171s]
[ 171s] /usr/lib/python3.6/site-packages/django/conf/__init__.py:90: ImproperlyConfigured
[ 171s] ------------------------------ Captured log call -------------------------------
[ 171s] WARNING passlib.ext.django.utils.DjangoContextAdapter:utils.py:771 reverting partial monkeypatching of django...
[ 171s] __________________ ExtensionBehaviorTest.test_empty_password ___________________
[ 171s]
[ 171s] self = <passlib.tests.test_ext_django.ExtensionBehaviorTest testMethod=test_empty_password>
[ 171s]
[ 171s] def setUp(self):
[ 171s] super(ExtensionBehaviorTest, self).setUp()
[ 171s]
[ 171s] # always load extension before each test
[ 171s] > self.load_extension(PASSLIB_CONFIG=self.config)
[ 171s]
[ 171s] passlib/tests/test_ext_django.py:850:
[ 171s] _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
[ 171s] passlib/tests/test_ext_django.py:313: in load_extension
[ 171s] import passlib.ext.django.models
[ 171s] passlib/ext/django/models.py:32: in <module>
[ 171s] adapter.load_model()
[ 171s] passlib/ext/django/utils.py:792: in load_model
[ 171s] self.install_patch()
[ 171s] passlib/ext/django/utils.py:736: in install_patch
[ 171s] manager.patch(target, value)
[ 171s] passlib/ext/django/utils.py:1194: in patch
[ 171s] current = self._get_path(path)
[ 171s] passlib/ext/django/utils.py:1153: in _get_path
[ 171s] obj, attr = self._import_path(key)
[ 171s] passlib/ext/django/utils.py:1138: in _import_path
[ 171s] obj = __import__(name, fromlist=[attr], level=0)
[ 171s] /usr/lib/python3.6/site-packages/django/contrib/auth/forms.py:11: in <module>
[ 171s] from django.contrib.auth.tokens import default_token_generator
[ 171s] /usr/lib/python3.6/site-packages/django/contrib/auth/tokens.py:117: in <module>
[ 171s] default_token_generator = PasswordResetTokenGenerator()
[ 171s] /usr/lib/python3.6/site-packages/django/contrib/auth/tokens.py:18: in __init__
[ 171s] self.secret = self.secret or settings.SECRET_KEY
[ 171s] _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
[ 171s]
[ 171s] self = <LazySettings "None">, name = 'SECRET_KEY'
[ 171s]
[ 171s] def __getattr__(self, name):
[ 171s] """Return the value of a setting and cache it in self.__dict__."""
[ 171s] if self._wrapped is empty:
[ 171s] self._setup(name)
[ 171s] val = getattr(self._wrapped, name)
[ 171s]
[ 171s] # Special case some settings which require further modification.
[ 171s] # This is done here for performance reasons so the modified value is cached.
[ 171s] if name in {'MEDIA_URL', 'STATIC_URL'} and val is not None:
[ 171s] val = self._add_script_prefix(val)
[ 171s] elif name == 'SECRET_KEY' and not val:
[ 171s] > raise ImproperlyConfigured("The SECRET_KEY setting must not be empty.")
[ 171s] E django.core.exceptions.ImproperlyConfigured: The SECRET_KEY setting must not be empty.
[ 171s]
[ 171s] /usr/lib/python3.6/site-packages/django/conf/__init__.py:90: ImproperlyConfigured
[ 171s] ------------------------------ Captured log call -------------------------------
[ 171s] WARNING passlib.ext.django.utils.DjangoContextAdapter:utils.py:771 reverting partial monkeypatching of django...
[ 171s] _________________ ExtensionBehaviorTest.test_extension_config __________________
[ 171s]
[ 171s] self = <passlib.tests.test_ext_django.ExtensionBehaviorTest testMethod=test_extension_config>
[ 171s]
[ 171s] def setUp(self):
[ 171s] super(ExtensionBehaviorTest, self).setUp()
[ 171s]
[ 171s] # always load extension before each test
[ 171s] > self.load_extension(PASSLIB_CONFIG=self.config)
[ 171s]
[ 171s] passlib/tests/test_ext_django.py:850:
[ 171s] _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
[ 171s] passlib/tests/test_ext_django.py:313: in load_extension
[ 171s] import passlib.ext.django.models
[ 171s] passlib/ext/django/models.py:32: in <module>
[ 171s] adapter.load_model()
[ 171s] passlib/ext/django/utils.py:792: in load_model
[ 171s] self.install_patch()
[ 171s] passlib/ext/django/utils.py:736: in install_patch
[ 171s] manager.patch(target, value)
[ 171s] passlib/ext/django/utils.py:1194: in patch
[ 171s] current = self._get_path(path)
[ 171s] passlib/ext/django/utils.py:1153: in _get_path
[ 171s] obj, attr = self._import_path(key)
[ 171s] passlib/ext/django/utils.py:1138: in _import_path
[ 171s] obj = __import__(name, fromlist=[attr], level=0)
[ 171s] /usr/lib/python3.6/site-packages/django/contrib/auth/forms.py:11: in <module>
[ 171s] from django.contrib.auth.tokens import default_token_generator
[ 171s] /usr/lib/python3.6/site-packages/django/contrib/auth/tokens.py:117: in <module>
[ 171s] default_token_generator = PasswordResetTokenGenerator()
[ 171s] /usr/lib/python3.6/site-packages/django/contrib/auth/tokens.py:18: in __init__
[ 171s] self.secret = self.secret or settings.SECRET_KEY
[ 171s] _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
[ 171s]
[ 171s] self = <LazySettings "None">, name = 'SECRET_KEY'
[ 171s]
[ 171s] def __getattr__(self, name):
[ 171s] """Return the value of a setting and cache it in self.__dict__."""
[ 171s] if self._wrapped is empty:
[ 171s] self._setup(name)
[ 171s] val = getattr(self._wrapped, name)
[ 171s]
[ 171s] # Special case some settings which require further modification.
[ 171s] # This is done here for performance reasons so the modified value is cached.
[ 171s] if name in {'MEDIA_URL', 'STATIC_URL'} and val is not None:
[ 171s] val = self._add_script_prefix(val)
[ 171s] elif name == 'SECRET_KEY' and not val:
[ 171s] > raise ImproperlyConfigured("The SECRET_KEY setting must not be empty.")
[ 171s] E django.core.exceptions.ImproperlyConfigured: The SECRET_KEY setting must not be empty.
[ 171s]
[ 171s] /usr/lib/python3.6/site-packages/django/conf/__init__.py:90: ImproperlyConfigured
[ 171s] ------------------------------ Captured log call -------------------------------
[ 171s] WARNING passlib.ext.django.utils.DjangoContextAdapter:utils.py:771 reverting partial monkeypatching of django...
[ 171s] ________________ ExtensionBehaviorTest.test_invalid_hash_values ________________
[ 171s]
[ 171s] self = <passlib.tests.test_ext_django.ExtensionBehaviorTest testMethod=test_invalid_hash_values>
[ 171s]
[ 171s] def setUp(self):
[ 171s] super(ExtensionBehaviorTest, self).setUp()
[ 171s]
[ 171s] # always load extension before each test
[ 171s] > self.load_extension(PASSLIB_CONFIG=self.config)
[ 171s]
[ 171s] passlib/tests/test_ext_django.py:850:
[ 171s] _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
[ 171s] passlib/tests/test_ext_django.py:313: in load_extension
[ 171s] import passlib.ext.django.models
[ 171s] passlib/ext/django/models.py:32: in <module>
[ 171s] adapter.load_model()
[ 171s] passlib/ext/django/utils.py:792: in load_model
[ 171s] self.install_patch()
[ 171s] passlib/ext/django/utils.py:736: in install_patch
[ 171s] manager.patch(target, value)
[ 171s] passlib/ext/django/utils.py:1194: in patch
[ 171s] current = self._get_path(path)
[ 171s] passlib/ext/django/utils.py:1153: in _get_path
[ 171s] obj, attr = self._import_path(key)
[ 171s] passlib/ext/django/utils.py:1138: in _import_path
[ 171s] obj = __import__(name, fromlist=[attr], level=0)
[ 171s] /usr/lib/python3.6/site-packages/django/contrib/auth/forms.py:11: in <module>
[ 171s] from django.contrib.auth.tokens import default_token_generator
[ 171s] /usr/lib/python3.6/site-packages/django/contrib/auth/tokens.py:117: in <module>
[ 171s] default_token_generator = PasswordResetTokenGenerator()
[ 171s] /usr/lib/python3.6/site-packages/django/contrib/auth/tokens.py:18: in __init__
[ 171s] self.secret = self.secret or settings.SECRET_KEY
[ 171s] _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
[ 171s]
[ 171s] self = <LazySettings "None">, name = 'SECRET_KEY'
[ 171s]
[ 171s] def __getattr__(self, name):
[ 171s] """Return the value of a setting and cache it in self.__dict__."""
[ 171s] if self._wrapped is empty:
[ 171s] self._setup(name)
[ 171s] val = getattr(self._wrapped, name)
[ 171s]
[ 171s] # Special case some settings which require further modification.
[ 171s] # This is done here for performance reasons so the modified value is cached.
[ 171s] if name in {'MEDIA_URL', 'STATIC_URL'} and val is not None:
[ 171s] val = self._add_script_prefix(val)
[ 171s] elif name == 'SECRET_KEY' and not val:
[ 171s] > raise ImproperlyConfigured("The SECRET_KEY setting must not be empty.")
[ 171s] E django.core.exceptions.ImproperlyConfigured: The SECRET_KEY setting must not be empty.
[ 171s]
[ 171s] /usr/lib/python3.6/site-packages/django/conf/__init__.py:90: ImproperlyConfigured
[ 171s] ------------------------------ Captured log call -------------------------------
[ 171s] WARNING passlib.ext.django.utils.DjangoContextAdapter:utils.py:771 reverting partial monkeypatching of django...
[ 171s] __________________ ExtensionBehaviorTest.test_none_hash_value __________________
[ 171s]
[ 171s] self = <passlib.tests.test_ext_django.ExtensionBehaviorTest testMethod=test_none_hash_value>
[ 171s]
[ 171s] def setUp(self):
[ 171s] super(ExtensionBehaviorTest, self).setUp()
[ 171s]
[ 171s] # always load extension before each test
[ 171s] > self.load_extension(PASSLIB_CONFIG=self.config)
[ 171s]
[ 171s] passlib/tests/test_ext_django.py:850:
[ 171s] _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
[ 171s] passlib/tests/test_ext_django.py:313: in load_extension
[ 171s] import passlib.ext.django.models
[ 171s] passlib/ext/django/models.py:32: in <module>
[ 171s] adapter.load_model()
[ 171s] passlib/ext/django/utils.py:792: in load_model
[ 171s] self.install_patch()
[ 171s] passlib/ext/django/utils.py:736: in install_patch
[ 171s] manager.patch(target, value)
[ 171s] passlib/ext/django/utils.py:1194: in patch
[ 171s] current = self._get_path(path)
[ 171s] passlib/ext/django/utils.py:1153: in _get_path
[ 171s] obj, attr = self._import_path(key)
[ 171s] passlib/ext/django/utils.py:1138: in _import_path
[ 171s] obj = __import__(name, fromlist=[attr], level=0)
[ 171s] /usr/lib/python3.6/site-packages/django/contrib/auth/forms.py:11: in <module>
[ 171s] from django.contrib.auth.tokens import default_token_generator
[ 171s] /usr/lib/python3.6/site-packages/django/contrib/auth/tokens.py:117: in <module>
[ 171s] default_token_generator = PasswordResetTokenGenerator()
[ 171s] /usr/lib/python3.6/site-packages/django/contrib/auth/tokens.py:18: in __init__
[ 171s] self.secret = self.secret or settings.SECRET_KEY
[ 171s] _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
[ 171s]
[ 171s] self = <LazySettings "None">, name = 'SECRET_KEY'
[ 171s]
[ 171s] def __getattr__(self, name):
[ 171s] """Return the value of a setting and cache it in self.__dict__."""
[ 171s] if self._wrapped is empty:
[ 171s] self._setup(name)
[ 171s] val = getattr(self._wrapped, name)
[ 171s]
[ 171s] # Special case some settings which require further modification.
[ 171s] # This is done here for performance reasons so the modified value is cached.
[ 171s] if name in {'MEDIA_URL', 'STATIC_URL'} and val is not None:
[ 171s] val = self._add_script_prefix(val)
[ 171s] elif name == 'SECRET_KEY' and not val:
[ 171s] > raise ImproperlyConfigured("The SECRET_KEY setting must not be empty.")
[ 171s] E django.core.exceptions.ImproperlyConfigured: The SECRET_KEY setting must not be empty.
[ 171s]
[ 171s] /usr/lib/python3.6/site-packages/django/conf/__init__.py:90: ImproperlyConfigured
[ 171s] ------------------------------ Captured log call -------------------------------
[ 171s] WARNING passlib.ext.django.utils.DjangoContextAdapter:utils.py:771 reverting partial monkeypatching of django...
[ 171s] ___________________ ExtensionBehaviorTest.test_unusable_flag ___________________
[ 171s]
[ 171s] self = <passlib.tests.test_ext_django.ExtensionBehaviorTest testMethod=test_unusable_flag>
[ 171s]
[ 171s] def setUp(self):
[ 171s] super(ExtensionBehaviorTest, self).setUp()
[ 171s]
[ 171s] # always load extension before each test
[ 171s] > self.load_extension(PASSLIB_CONFIG=self.config)
[ 171s]
[ 171s] passlib/tests/test_ext_django.py:850:
[ 171s] _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
[ 171s] passlib/tests/test_ext_django.py:313: in load_extension
[ 171s] import passlib.ext.django.models
[ 171s] passlib/ext/django/models.py:32: in <module>
[ 171s] adapter.load_model()
[ 171s] passlib/ext/django/utils.py:792: in load_model
[ 171s] self.install_patch()
[ 171s] passlib/ext/django/utils.py:736: in install_patch
[ 171s] manager.patch(target, value)
[ 171s] passlib/ext/django/utils.py:1194: in patch
[ 171s] current = self._get_path(path)
[ 171s] passlib/ext/django/utils.py:1153: in _get_path
[ 171s] obj, attr = self._import_path(key)
[ 171s] passlib/ext/django/utils.py:1138: in _import_path
[ 171s] obj = __import__(name, fromlist=[attr], level=0)
[ 171s] /usr/lib/python3.6/site-packages/django/contrib/auth/forms.py:11: in <module>
[ 171s] from django.contrib.auth.tokens import default_token_generator
[ 171s] /usr/lib/python3.6/site-packages/django/contrib/auth/tokens.py:117: in <module>
[ 171s] default_token_generator = PasswordResetTokenGenerator()
[ 171s] /usr/lib/python3.6/site-packages/django/contrib/auth/tokens.py:18: in __init__
[ 171s] self.secret = self.secret or settings.SECRET_KEY
[ 171s] _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
[ 171s]
[ 171s] self = <LazySettings "None">, name = 'SECRET_KEY'
[ 171s]
[ 171s] def __getattr__(self, name):
[ 171s] """Return the value of a setting and cache it in self.__dict__."""
[ 171s] if self._wrapped is empty:
[ 171s] self._setup(name)
[ 171s] val = getattr(self._wrapped, name)
[ 171s]
[ 171s] # Special case some settings which require further modification.
[ 171s] # This is done here for performance reasons so the modified value is cached.
[ 171s] if name in {'MEDIA_URL', 'STATIC_URL'} and val is not None:
[ 171s] val = self._add_script_prefix(val)
[ 171s] elif name == 'SECRET_KEY' and not val:
[ 171s] > raise ImproperlyConfigured("The SECRET_KEY setting must not be empty.")
[ 171s] E django.core.exceptions.ImproperlyConfigured: The SECRET_KEY setting must not be empty.
[ 171s]
[ 171s] /usr/lib/python3.6/site-packages/django/conf/__init__.py:90: ImproperlyConfigured
[ 171s] ------------------------------ Captured log call -------------------------------
[ 171s] WARNING passlib.ext.django.utils.DjangoContextAdapter:utils.py:771 reverting partial monkeypatching of django...
[ 171s] __________________ DjangoExtensionTest.test_00_patch_control ___________________
[ 171s]
[ 171s] self = <passlib.tests.test_ext_django.DjangoExtensionTest testMethod=test_00_patch_control>
[ 171s]
[ 171s] def test_00_patch_control(self):
[ 171s] """test set_django_password_context patch/unpatch"""
[ 171s]
[ 171s] # check config="disabled"
[ 171s] self.load_extension(PASSLIB_CONFIG="disabled", check=False)
[ 171s] self.assert_unpatched()
[ 171s]
[ 171s] # check legacy config=None
[ 171s] with self.assertWarningList("PASSLIB_CONFIG=None is deprecated"):
[ 171s] self.load_extension(PASSLIB_CONFIG=None, check=False)
[ 171s] self.assert_unpatched()
[ 171s]
[ 171s] # try stock django 1.0 context
[ 171s] > self.load_extension(PASSLIB_CONFIG="django-1.0", check=False)
[ 171s]
[ 171s] passlib/tests/test_ext_django.py:884:
[ 171s] _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
[ 171s] passlib/tests/test_ext_django.py:313: in load_extension
[ 171s] import passlib.ext.django.models
[ 171s] passlib/ext/django/models.py:32: in <module>
[ 171s] adapter.load_model()
[ 171s] passlib/ext/django/utils.py:792: in load_model
[ 171s] self.install_patch()
[ 171s] passlib/ext/django/utils.py:736: in install_patch
[ 171s] manager.patch(target, value)
[ 171s] passlib/ext/django/utils.py:1194: in patch
[ 171s] current = self._get_path(path)
[ 171s] passlib/ext/django/utils.py:1153: in _get_path
[ 171s] obj, attr = self._import_path(key)
[ 171s] passlib/ext/django/utils.py:1138: in _import_path
[ 171s] obj = __import__(name, fromlist=[attr], level=0)
[ 171s] /usr/lib/python3.6/site-packages/django/contrib/auth/forms.py:11: in <module>
[ 171s] from django.contrib.auth.tokens import default_token_generator
[ 171s] /usr/lib/python3.6/site-packages/django/contrib/auth/tokens.py:117: in <module>
[ 171s] default_token_generator = PasswordResetTokenGenerator()
[ 171s] /usr/lib/python3.6/site-packages/django/contrib/auth/tokens.py:18: in __init__
[ 171s] self.secret = self.secret or settings.SECRET_KEY
[ 171s] _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
[ 171s]
[ 171s] self = <LazySettings "None">, name = 'SECRET_KEY'
[ 171s]
[ 171s] def __getattr__(self, name):
[ 171s] """Return the value of a setting and cache it in self.__dict__."""
[ 171s] if self._wrapped is empty:
[ 171s] self._setup(name)
[ 171s] val = getattr(self._wrapped, name)
[ 171s]
[ 171s] # Special case some settings which require further modification.
[ 171s] # This is done here for performance reasons so the modified value is cached.
[ 171s] if name in {'MEDIA_URL', 'STATIC_URL'} and val is not None:
[ 171s] val = self._add_script_prefix(val)
[ 171s] elif name == 'SECRET_KEY' and not val:
[ 171s] > raise ImproperlyConfigured("The SECRET_KEY setting must not be empty.")
[ 171s] E django.core.exceptions.ImproperlyConfigured: The SECRET_KEY setting must not be empty.
[ 171s]
[ 171s] /usr/lib/python3.6/site-packages/django/conf/__init__.py:90: ImproperlyConfigured
[ 171s] ------------------------------ Captured log call -------------------------------
[ 171s] WARNING passlib.ext.django.utils.DjangoContextAdapter:utils.py:771 reverting partial monkeypatching of django...
[ 171s] _______________ DjangoExtensionTest.test_01_overwrite_detection ________________
[ 171s]
[ 171s] self = <passlib.tests.test_ext_django.DjangoExtensionTest testMethod=test_01_overwrite_detection>
[ 171s]
[ 171s] def test_01_overwrite_detection(self):
[ 171s] """test detection of foreign monkeypatching"""
[ 171s] # NOTE: this sets things up, and spot checks two methods,
[ 171s] # this should be enough to verify patch manager is working.
[ 171s] # TODO: test unpatch behavior honors flag.
[ 171s]
[ 171s] # configure plugin to use sample context
[ 171s] config = "[passlib]\nschemes=des_crypt\n"
[ 171s] > self.load_extension(PASSLIB_CONFIG=config)
[ 171s]
[ 171s] passlib/tests/test_ext_django.py:905:
[ 171s] _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
[ 171s] passlib/tests/test_ext_django.py:313: in load_extension
[ 171s] import passlib.ext.django.models
[ 171s] passlib/ext/django/models.py:32: in <module>
[ 171s] adapter.load_model()
[ 171s] passlib/ext/django/utils.py:792: in load_model
[ 171s] self.install_patch()
[ 171s] passlib/ext/django/utils.py:736: in install_patch
[ 171s] manager.patch(target, value)
[ 171s] passlib/ext/django/utils.py:1194: in patch
[ 171s] current = self._get_path(path)
[ 171s] passlib/ext/django/utils.py:1153: in _get_path
[ 171s] obj, attr = self._import_path(key)
[ 171s] passlib/ext/django/utils.py:1138: in _import_path
[ 171s] obj = __import__(name, fromlist=[attr], level=0)
[ 171s] /usr/lib/python3.6/site-packages/django/contrib/auth/forms.py:11: in <module>
[ 171s] from django.contrib.auth.tokens import default_token_generator
[ 171s] /usr/lib/python3.6/site-packages/django/contrib/auth/tokens.py:117: in <module>
[ 171s] default_token_generator = PasswordResetTokenGenerator()
[ 171s] /usr/lib/python3.6/site-packages/django/contrib/auth/tokens.py:18: in __init__
[ 171s] self.secret = self.secret or settings.SECRET_KEY
[ 171s] _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
[ 171s]
[ 171s] self = <LazySettings "None">, name = 'SECRET_KEY'
[ 171s]
[ 171s] def __getattr__(self, name):
[ 171s] """Return the value of a setting and cache it in self.__dict__."""
[ 171s] if self._wrapped is empty:
[ 171s] self._setup(name)
[ 171s] val = getattr(self._wrapped, name)
[ 171s]
[ 171s] # Special case some settings which require further modification.
[ 171s] # This is done here for performance reasons so the modified value is cached.
[ 171s] if name in {'MEDIA_URL', 'STATIC_URL'} and val is not None:
[ 171s] val = self._add_script_prefix(val)
[ 171s] elif name == 'SECRET_KEY' and not val:
[ 171s] > raise ImproperlyConfigured("The SECRET_KEY setting must not be empty.")
[ 171s] E django.core.exceptions.ImproperlyConfigured: The SECRET_KEY setting must not be empty.
[ 171s]
[ 171s] /usr/lib/python3.6/site-packages/django/conf/__init__.py:90: ImproperlyConfigured
[ 171s] ------------------------------ Captured log call -------------------------------
[ 171s] WARNING passlib.ext.django.utils.DjangoContextAdapter:utils.py:771 reverting partial monkeypatching of django...
[ 171s] __________________ DjangoExtensionTest.test_12_config_presets __________________
[ 171s]
[ 171s] self = <passlib.tests.test_ext_django.DjangoExtensionTest testMethod=test_12_config_presets>
[ 171s]
[ 171s] def test_12_config_presets(self):
[ 171s] """test PASSLIB_CONFIG='<preset>'"""
[ 171s] # test django presets
[ 171s] > self.load_extension(PASSLIB_CONTEXT="django-default", check=False)
[ 171s]
[ 171s] passlib/tests/test_ext_django.py:989:
[ 171s] _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
[ 171s] passlib/tests/test_ext_django.py:313: in load_extension
[ 171s] import passlib.ext.django.models
[ 171s] passlib/ext/django/models.py:32: in <module>
[ 171s] adapter.load_model()
[ 171s] passlib/ext/django/utils.py:792: in load_model
[ 171s] self.install_patch()
[ 171s] passlib/ext/django/utils.py:736: in install_patch
[ 171s] manager.patch(target, value)
[ 171s] passlib/ext/django/utils.py:1194: in patch
[ 171s] current = self._get_path(path)
[ 171s] passlib/ext/django/utils.py:1153: in _get_path
[ 171s] obj, attr = self._import_path(key)
[ 171s] passlib/ext/django/utils.py:1138: in _import_path
[ 171s] obj = __import__(name, fromlist=[attr], level=0)
[ 171s] /usr/lib/python3.6/site-packages/django/contrib/auth/forms.py:11: in <module>
[ 171s] from django.contrib.auth.tokens import default_token_generator
[ 171s] /usr/lib/python3.6/site-packages/django/contrib/auth/tokens.py:117: in <module>
[ 171s] default_token_generator = PasswordResetTokenGenerator()
[ 171s] /usr/lib/python3.6/site-packages/django/contrib/auth/tokens.py:18: in __init__
[ 171s] self.secret = self.secret or settings.SECRET_KEY
[ 171s] _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
[ 171s]
[ 171s] self = <LazySettings "None">, name = 'SECRET_KEY'
[ 171s]
[ 171s] def __getattr__(self, name):
[ 171s] """Return the value of a setting and cache it in self.__dict__."""
[ 171s] if self._wrapped is empty:
[ 171s] self._setup(name)
[ 171s] val = getattr(self._wrapped, name)
[ 171s]
[ 171s] # Special case some settings which require further modification.
[ 171s] # This is done here for performance reasons so the modified value is cached.
[ 171s] if name in {'MEDIA_URL', 'STATIC_URL'} and val is not None:
[ 171s] val = self._add_script_prefix(val)
[ 171s] elif name == 'SECRET_KEY' and not val:
[ 171s] > raise ImproperlyConfigured("The SECRET_KEY setting must not be empty.")
[ 171s] E django.core.exceptions.ImproperlyConfigured: The SECRET_KEY setting must not be empty.
[ 171s]
[ 171s] /usr/lib/python3.6/site-packages/django/conf/__init__.py:90: ImproperlyConfigured
[ 171s] ------------------------------ Captured log call -------------------------------
[ 171s] WARNING passlib.ext.django.utils.DjangoContextAdapter:utils.py:771 reverting partial monkeypatching of django...
[ 171s] _________________ DjangoExtensionTest.test_13_config_defaults __________________
[ 171s]
[ 171s] self = <passlib.tests.test_ext_django.DjangoExtensionTest testMethod=test_13_config_defaults>
[ 171s]
[ 171s] def test_13_config_defaults(self):
[ 171s] """test PASSLIB_CONFIG default behavior"""
[ 171s] # check implicit default
[ 171s] from passlib.ext.django.utils import PASSLIB_DEFAULT
[ 171s] default = CryptContext.from_string(PASSLIB_DEFAULT)
[ 171s] > self.load_extension()
[ 171s]
[ 171s] passlib/tests/test_ext_django.py:1004:
[ 171s] _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
[ 171s] passlib/tests/test_ext_django.py:313: in load_extension
[ 171s] import passlib.ext.django.models
[ 171s] passlib/ext/django/models.py:32: in <module>
[ 171s] adapter.load_model()
[ 171s] passlib/ext/django/utils.py:792: in load_model
[ 171s] self.install_patch()
[ 171s] passlib/ext/django/utils.py:736: in install_patch
[ 171s] manager.patch(target, value)
[ 171s] passlib/ext/django/utils.py:1194: in patch
[ 171s] current = self._get_path(path)
[ 171s] passlib/ext/django/utils.py:1153: in _get_path
[ 171s] obj, attr = self._import_path(key)
[ 171s] passlib/ext/django/utils.py:1138: in _import_path
[ 171s] obj = __import__(name, fromlist=[attr], level=0)
[ 171s] /usr/lib/python3.6/site-packages/django/contrib/auth/forms.py:11: in <module>
[ 171s] from django.contrib.auth.tokens import default_token_generator
[ 171s] /usr/lib/python3.6/site-packages/django/contrib/auth/tokens.py:117: in <module>
[ 171s] default_token_generator = PasswordResetTokenGenerator()
[ 171s] /usr/lib/python3.6/site-packages/django/contrib/auth/tokens.py:18: in __init__
[ 172s] self.secret = self.secret or settings.SECRET_KEY
[ 172s] _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
[ 172s]
[ 172s] self = <LazySettings "None">, name = 'SECRET_KEY'
[ 172s]
[ 172s] def __getattr__(self, name):
[ 172s] """Return the value of a setting and cache it in self.__dict__."""
[ 172s] if self._wrapped is empty:
[ 172s] self._setup(name)
[ 172s] val = getattr(self._wrapped, name)
[ 172s]
[ 172s] # Special case some settings which require further modification.
[ 172s] # This is done here for performance reasons so the modified value is cached.
[ 172s] if name in {'MEDIA_URL', 'STATIC_URL'} and val is not None:
[ 172s] val = self._add_script_prefix(val)
[ 172s] elif name == 'SECRET_KEY' and not val:
[ 172s] > raise ImproperlyConfigured("The SECRET_KEY setting must not be empty.")
[ 172s] E django.core.exceptions.ImproperlyConfigured: The SECRET_KEY setting must not be empty.
[ 172s]
[ 172s] /usr/lib/python3.6/site-packages/django/conf/__init__.py:90: ImproperlyConfigured
[ 172s] ------------------------------ Captured log call -------------------------------
[ 172s] WARNING passlib.ext.django.utils.DjangoContextAdapter:utils.py:771 reverting partial monkeypatching of django...
[ 172s] _________________ DjangoExtensionTest.test_21_category_setting _________________
[ 172s]
[ 172s] self = <passlib.tests.test_ext_django.DjangoExtensionTest testMethod=test_21_category_setting>
[ 172s]
[ 172s] def test_21_category_setting(self):
[ 172s] """test PASSLIB_GET_CATEGORY parameter"""
[ 172s] # define config where rounds can be used to detect category
[ 172s] config = dict(
[ 172s] schemes = ["sha256_crypt"],
[ 172s] sha256_crypt__default_rounds = 1000,
[ 172s] staff__sha256_crypt__default_rounds = 2000,
[ 172s] superuser__sha256_crypt__default_rounds = 3000,
[ 172s] )
[ 172s] from passlib.hash import sha256_crypt
[ 172s]
[ 172s] def run(**kwds):
[ 172s] """helper to take in user opts, return rounds used in password"""
[ 172s] user = FakeUser(**kwds)
[ 172s] user.set_password("stub")
[ 172s] return sha256_crypt.from_string(user.password).rounds
[ 172s]
[ 172s] # test default get_category
[ 172s] > self.load_extension(PASSLIB_CONFIG=config)
[ 172s]
[ 172s] passlib/tests/test_ext_django.py:1045:
[ 172s] _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
[ 172s] passlib/tests/test_ext_django.py:313: in load_extension
[ 172s] import passlib.ext.django.models
[ 172s] passlib/ext/django/models.py:32: in <module>
[ 172s] adapter.load_model()
[ 172s] passlib/ext/django/utils.py:792: in load_model
[ 172s] self.install_patch()
[ 172s] passlib/ext/django/utils.py:736: in install_patch
[ 172s] manager.patch(target, value)
[ 172s] passlib/ext/django/utils.py:1194: in patch
[ 172s] current = self._get_path(path)
[ 172s] passlib/ext/django/utils.py:1153: in _get_path
[ 172s] obj, attr = self._import_path(key)
[ 172s] passlib/ext/django/utils.py:1138: in _import_path
[ 172s] obj = __import__(name, fromlist=[attr], level=0)
[ 172s] /usr/lib/python3.6/site-packages/django/contrib/auth/forms.py:11: in <module>
[ 172s] from django.contrib.auth.tokens import default_token_generator
[ 172s] /usr/lib/python3.6/site-packages/django/contrib/auth/tokens.py:117: in <module>
[ 172s] default_token_generator = PasswordResetTokenGenerator()
[ 172s] /usr/lib/python3.6/site-packages/django/contrib/auth/tokens.py:18: in __init__
[ 172s] self.secret = self.secret or settings.SECRET_KEY
[ 172s] _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
[ 172s]
[ 172s] self = <LazySettings "None">, name = 'SECRET_KEY'
[ 172s]
[ 172s] def __getattr__(self, name):
[ 172s] """Return the value of a setting and cache it in self.__dict__."""
[ 172s] if self._wrapped is empty:
[ 172s] self._setup(name)
[ 172s] val = getattr(self._wrapped, name)
[ 172s]
[ 172s] # Special case some settings which require further modification.
[ 172s] # This is done here for performance reasons so the modified value is cached.
[ 172s] if name in {'MEDIA_URL', 'STATIC_URL'} and val is not None:
[ 172s] val = self._add_script_prefix(val)
[ 172s] elif name == 'SECRET_KEY' and not val:
[ 172s] > raise ImproperlyConfigured("The SECRET_KEY setting must not be empty.")
[ 172s] E django.core.exceptions.ImproperlyConfigured: The SECRET_KEY setting must not be empty.
[ 172s]
[ 172s] /usr/lib/python3.6/site-packages/django/conf/__init__.py:90: ImproperlyConfigured
[ 172s] ------------------------------ Captured log call -------------------------------
[ 172s] WARNING passlib.ext.django.utils.DjangoContextAdapter:utils.py:771 reverting partial monkeypatching of django...
[ 172s] =============================== warnings summary ===============================
[ 172s] passlib/tests/test_apache.py:210
[ 172s] /home/abuild/rpmbuild/BUILD/passlib-1.7.4/passlib/tests/test_apache.py:210: DeprecationWarning: invalid escape sequence \(
[ 172s] with self.assertWarningList("update\(\) is deprecated"):
[ 172s]
[ 172s] passlib/tests/test_apache.py:280
[ 172s] /home/abuild/rpmbuild/BUILD/passlib-1.7.4/passlib/tests/test_apache.py:280: DeprecationWarning: invalid escape sequence \(
[ 172s] with self.assertWarningList(["verify\(\) is deprecated"]*2):
[ 172s]
[ 172s] passlib/tests/test_apache.py:370
[ 172s] /home/abuild/rpmbuild/BUILD/passlib-1.7.4/passlib/tests/test_apache.py:370: DeprecationWarning: invalid escape sequence \(
[ 172s] with self.assertWarningList("find\(\) is deprecated"):
[ 172s]
[ 172s] passlib/tests/test_apache.py:606
[ 172s] /home/abuild/rpmbuild/BUILD/passlib-1.7.4/passlib/tests/test_apache.py:606: DeprecationWarning: invalid escape sequence \(
[ 172s] with self.assertWarningList("update\(\) is deprecated"):
[ 172s]
[ 172s] passlib/tests/test_apache.py:640
[ 172s] /home/abuild/rpmbuild/BUILD/passlib-1.7.4/passlib/tests/test_apache.py:640: DeprecationWarning: invalid escape sequence \(
[ 172s] with self.assertWarningList(["verify\(\) is deprecated"]*2):
[ 172s]
[ 172s] passlib/tests/test_apache.py:728
[ 172s] /home/abuild/rpmbuild/BUILD/passlib-1.7.4/passlib/tests/test_apache.py:728: DeprecationWarning: invalid escape sequence \(
[ 172s] with self.assertWarningList("find\(\) is deprecated"):
[ 172s]
[ 172s] passlib/tests/test_context_deprecated.py:554
[ 172s] /home/abuild/rpmbuild/BUILD/passlib-1.7.4/passlib/tests/test_context_deprecated.py:554: DeprecationWarning: invalid escape sequence \.
[ 172s] warnings.filterwarnings("ignore", ".*(CryptPolicy|context\.policy).*(has|have) been deprecated.*")
[ 172s]
[ 172s] passlib/tests/test_context_deprecated.py:707
[ 172s] /home/abuild/rpmbuild/BUILD/passlib-1.7.4/passlib/tests/test_context_deprecated.py:707: DeprecationWarning: invalid escape sequence \.
[ 172s] warnings.filterwarnings("ignore", ".*(CryptPolicy|context\.policy).*(has|have) been deprecated.*")
[ 172s]
[ 172s] passlib/tests/test_ext_django.py:916
[ 172s] /home/abuild/rpmbuild/BUILD/passlib-1.7.4/passlib/tests/test_ext_django.py:916: DeprecationWarning: invalid escape sequence \.
[ 172s] with self.assertWarningList("another library has patched.*User\.set_password"):
[ 172s]
[ 172s] passlib/tests/test_handlers.py:1523
[ 172s] /home/abuild/rpmbuild/BUILD/passlib-1.7.4/passlib/tests/test_handlers.py:1523: DeprecationWarning: invalid escape sequence \d
[ 172s] ("freebsd(9|1\d)|linux", True),
[ 172s]
[ 172s] passlib/tests/test_handlers.py:1761
[ 172s] /home/abuild/rpmbuild/BUILD/passlib-1.7.4/passlib/tests/test_handlers.py:1761: DeprecationWarning: invalid escape sequence \(
[ 172s] warnings.filterwarnings("ignore", "passing settings to .*.hash\(\) is deprecated")
[ 172s]
[ 172s] passlib/tests/test_utils.py:144
[ 172s] /home/abuild/rpmbuild/BUILD/passlib-1.7.4/passlib/tests/test_utils.py:144: DeprecationWarning: invalid escape sequence \(
[ 172s] warnings.filterwarnings("ignore", "The function.*generate_password\(\) is deprecated")
[ 172s]
[ 172s] passlib/tests/test_crypto_scrypt.py: 12 warnings
[ 172s] /home/abuild/rpmbuild/BUILD/passlib-1.7.4/passlib/crypto/scrypt/__init__.py:165: PasslibSecurityWarning: Using builtin scrypt backend, which is 100x slower than is required for adequate security. Installing scrypt support (via 'pip install scrypt') is strongly recommended
[ 172s] "is strongly recommended" % slowdown, exc.PasslibSecurityWarning)
[ 172s]
[ 172s] passlib/tests/test_ext_django.py::DjangoExtensionTest::test_02_handler_wrapper
[ 172s] /home/abuild/rpmbuild/BUILD/passlib-1.7.4/passlib/ext/django/utils.py:1000: RemovedInDjango40Warning: django.utils.translation.ugettext_noop() is deprecated in favor of django.utils.translation.gettext_noop().
[ 172s] (_('algorithm'), handler.name),
[ 172s]
[ 172s] passlib/tests/test_ext_django.py::DjangoExtensionTest::test_02_handler_wrapper
[ 172s] passlib/tests/test_ext_django.py::DjangoExtensionTest::test_02_handler_wrapper
[ 172s] passlib/tests/test_ext_django.py::DjangoExtensionTest::test_02_handler_wrapper
[ 172s] /home/abuild/rpmbuild/BUILD/passlib-1.7.4/passlib/ext/django/utils.py:1006: RemovedInDjango40Warning: django.utils.translation.ugettext_noop() is deprecated in favor of django.utils.translation.gettext_noop().
[ 172s] items.append((_(key), value))
[ 172s]
[ 172s] -- Docs: https://docs.pytest.org/en/stable/warnings.html
[ 172s] =========================== short test summary info ============================
[ 172s] SKIPPED [1] passlib/tests/test_crypto_scrypt.py:604: non-builtin backend is present
[ 172s] SKIPPED [1] passlib/tests/test_crypto_scrypt.py:615: higher priority backend present
[ 172s] SKIPPED [1] passlib/tests/test_ext_django.py:462: extension not loaded
[ 172s] SKIPPED [1] passlib/tests/test_ext_django_source.py:244: requires PASSLIB_TESTS_DJANGO_SOURCE_PATH to be set
[ 172s] SKIPPED [63] passlib/tests/utils.py:2004: handler doesn't derive from HasManyIdents
[ 172s] SKIPPED [63] passlib/tests/utils.py:2420: no alternate hashes provided
[ 172s] SKIPPED [58] passlib/tests/utils.py:2667: no samples present
[ 172s] SKIPPED [40] passlib/tests/utils.py:2445: no config strings provided
[ 172s] SKIPPED [43] passlib/tests/utils.py:2501: no malformed hashes provided
[ 172s] SKIPPED [68] passlib/tests/utils.py:2773: requires >= 'full' test mode
[ 172s] SKIPPED [3] passlib/tests/utils.py:3349: varied support on 'linux' platform (current host support = True)
[ 172s] SKIPPED [65] passlib/tests/utils.py:3079: not applicable
[ 172s] SKIPPED [63] passlib/tests/utils.py:2055: handler doesn't derive from HasManyIdents
[ 172s] SKIPPED [60] passlib/tests/utils.py:2172: truncate_size not set
[ 172s] SKIPPED [18] passlib/tests/utils.py:1093: only default backend is being tested
[ 172s] SKIPPED [18] passlib/tests/utils.py:1125: only default backend is being tested
[ 172s] SKIPPED [18] passlib/tests/utils.py:1166: only default backend is being tested
[ 172s] SKIPPED [18] passlib/tests/utils.py:1175: only default backend is being tested
[ 172s] SKIPPED [17] passlib/tests/utils.py:1230: only default backend is being tested
[ 172s] SKIPPED [18] passlib/tests/utils.py:1234: only default backend is being tested
[ 172s] SKIPPED [18] passlib/tests/utils.py:1269: only default backend is being tested
[ 172s] SKIPPED [18] passlib/tests/utils.py:1322: only default backend is being tested
[ 172s] SKIPPED [18] passlib/tests/utils.py:1375: only default backend is being tested
[ 172s] SKIPPED [18] passlib/tests/utils.py:1396: only default backend is being tested
[ 172s] SKIPPED [18] passlib/tests/utils.py:1422: only default backend is being tested
[ 172s] SKIPPED [18] passlib/tests/utils.py:1485: only default backend is being tested
[ 172s] SKIPPED [18] passlib/tests/utils.py:1521: only default backend is being tested
[ 172s] SKIPPED [18] passlib/tests/utils.py:1595: only default backend is being tested
[ 172s] SKIPPED [18] passlib/tests/utils.py:1625: only default backend is being tested
[ 172s] SKIPPED [18] passlib/tests/utils.py:1641: only default backend is being tested
[ 172s] SKIPPED [18] passlib/tests/utils.py:2004: only default backend is being tested
[ 172s] SKIPPED [18] passlib/tests/utils.py:2281: only default backend is being tested
[ 172s] SKIPPED [18] passlib/tests/utils.py:2319: only default backend is being tested
[ 172s] SKIPPED [18] passlib/tests/utils.py:2334: only default backend is being tested
[ 172s] SKIPPED [18] passlib/tests/utils.py:2345: only default backend is being tested
[ 172s] SKIPPED [18] passlib/tests/utils.py:2376: only default backend is being tested
[ 172s] SKIPPED [18] passlib/tests/utils.py:2614: only default backend is being tested
[ 172s] SKIPPED [18] passlib/tests/utils.py:2420: only default backend is being tested
[ 172s] SKIPPED [18] passlib/tests/utils.py:2667: only default backend is being tested
[ 172s] SKIPPED [18] passlib/tests/utils.py:2445: only default backend is being tested
[ 172s] SKIPPED [18] passlib/tests/utils.py:2480: only default backend is being tested
[ 172s] SKIPPED [18] passlib/tests/utils.py:2501: only default backend is being tested
[ 172s] SKIPPED [18] passlib/tests/utils.py:2522: only default backend is being tested
[ 172s] SKIPPED [18] passlib/tests/utils.py:2560: only default backend is being tested
[ 172s] SKIPPED [1] passlib/tests/test_handlers.py:208: only default backend is being tested
[ 172s] SKIPPED [18] passlib/tests/utils.py:2773: only default backend is being tested
[ 172s] SKIPPED [18] passlib/tests/utils.py:3079: only default backend is being tested
[ 172s] SKIPPED [18] passlib/tests/utils.py:2055: only default backend is being tested
[ 172s] SKIPPED [18] passlib/tests/utils.py:1788: only default backend is being tested
[ 172s] SKIPPED [18] passlib/tests/utils.py:1973: only default backend is being tested
[ 172s] SKIPPED [18] passlib/tests/utils.py:1706: only default backend is being tested
[ 172s] SKIPPED [18] passlib/tests/utils.py:1848: only default backend is being tested
[ 172s] SKIPPED [18] passlib/tests/utils.py:1732: only default backend is being tested
[ 172s] SKIPPED [18] passlib/tests/utils.py:1886: only default backend is being tested
[ 172s] SKIPPED [18] passlib/tests/utils.py:1932: only default backend is being tested
[ 172s] SKIPPED [18] passlib/tests/utils.py:1907: only default backend is being tested
[ 172s] SKIPPED [1] passlib/tests/test_handlers.py:213: only default backend is being tested
[ 172s] SKIPPED [18] passlib/tests/utils.py:2172: only default backend is being tested
[ 172s] SKIPPED [18] passlib/tests/utils.py:2140: only default backend is being tested
[ 172s] SKIPPED [18] passlib/tests/utils.py:2107: only default backend is being tested
[ 172s] SKIPPED [18] passlib/tests/utils.py:1541: only default backend is being tested
[ 172s] SKIPPED [44] passlib/tests/utils.py:1595: handler lacks rounds attributes
[ 172s] SKIPPED [44] passlib/tests/utils.py:1625: handler lacks rounds attributes
[ 172s] SKIPPED [44] passlib/tests/utils.py:1641: handler lacks rounds attributes
[ 172s] SKIPPED [44] passlib/tests/utils.py:1788: handler lacks rounds attributes
[ 172s] SKIPPED [44] passlib/tests/utils.py:1973: handler lacks rounds attributes
[ 172s] SKIPPED [44] passlib/tests/utils.py:1706: handler lacks rounds attributes
[ 172s] SKIPPED [44] passlib/tests/utils.py:1848: handler lacks rounds attributes
[ 172s] SKIPPED [44] passlib/tests/utils.py:1732: handler lacks rounds attributes
[ 172s] SKIPPED [44] passlib/tests/utils.py:1886: handler lacks rounds attributes
[ 172s] SKIPPED [44] passlib/tests/utils.py:1932: handler lacks rounds attributes
[ 172s] SKIPPED [44] passlib/tests/utils.py:1907: handler lacks rounds attributes
[ 172s] SKIPPED [8] passlib/tests/utils.py:2140: truncate_size is set
[ 172s] SKIPPED [17] passlib/tests/utils.py:2684: only default backend is being tested
[ 172s] SKIPPED [9] passlib/tests/utils.py:2614: parsehash() not implemented
[ 172s] SKIPPED [9] passlib/tests/utils.py:2667: parsehash() not implemented
[ 172s] SKIPPED [47] passlib/tests/utils.py:2480: no unidentified hashes provided
[ 172s] SKIPPED [2] passlib/tests/utils.py:3349: not applicable to wrappers
[ 172s] SKIPPED [1] passlib/tests/test_handlers.py:711: unneeded
[ 172s] SKIPPED [53] passlib/tests/utils.py:1269: handler only has one backend
[ 172s] SKIPPED [58] passlib/tests/utils.py:2345: none listed
[ 172s] SKIPPED [25] passlib/tests/utils.py:1322: handler doesn't have salt
[ 172s] SKIPPED [25] passlib/tests/utils.py:1375: handler doesn't have salt
[ 172s] SKIPPED [25] passlib/tests/utils.py:1396: handler doesn't have salt
[ 172s] SKIPPED [25] passlib/tests/utils.py:1422: handler doesn't have salt
[ 172s] SKIPPED [25] passlib/tests/utils.py:1485: handler doesn't have salt
[ 172s] SKIPPED [25] passlib/tests/utils.py:1521: handler doesn't have salt
[ 172s] SKIPPED [23] passlib/tests/utils.py:2445: hash has no settings
[ 172s] SKIPPED [25] passlib/tests/utils.py:1541: handler doesn't have salt
[ 172s] SKIPPED [1] passlib/tests/test_handlers.py:501: test case doesn't support 'realm' keyword
[ 172s] SKIPPED [2] passlib/tests/utils.py:2522: not applicable
[ 172s] SKIPPED [3] passlib/tests/utils.py:2684: not applicable
[ 172s] SKIPPED [1] passlib/tests/test_handlers_argon2.py:218: legacy 1.6 workflow not supported
[ 172s] SKIPPED [1] passlib/tests/test_handlers_argon2.py:218: only default backend is being tested
[ 172s] SKIPPED [1] passlib/tests/test_handlers_argon2.py:394: only default backend is being tested
[ 172s] SKIPPED [1] passlib/tests/test_handlers_argon2.py:231: only default backend is being tested
[ 172s] SKIPPED [1] passlib/tests/test_handlers_argon2.py:289: only default backend is being tested
[ 172s] SKIPPED [1] passlib/tests/test_handlers_argon2.py:222: only default backend is being tested
[ 172s] SKIPPED [1] passlib/tests/test_handlers_argon2.py:375: only default backend is being tested
[ 172s] SKIPPED [1] passlib/tests/test_handlers_argon2.py:384: only default backend is being tested
[ 172s] SKIPPED [1] passlib/tests/test_handlers_argon2.py:295: only default backend is being tested
[ 172s] SKIPPED [1] passlib/tests/test_handlers_argon2.py:333: only default backend is being tested
[ 172s] SKIPPED [1] passlib/tests/test_handlers_bcrypt.py:350: requires >= 'full' test mode
[ 172s] SKIPPED [4] passlib/tests/test_handlers_bcrypt.py:350: only default backend is being tested
[ 172s] SKIPPED [4] passlib/tests/test_handlers_bcrypt.py:408: only default backend is being tested
[ 172s] SKIPPED [1] passlib/tests/utils.py:2004: multiple idents not supported
[ 172s] SKIPPED [1] passlib/tests/utils.py:2055: multiple idents not supported
[ 172s] SKIPPED [4] passlib/tests/test_handlers_bcrypt.py:602: only default backend is being tested
[ 172s] SKIPPED [4] passlib/tests/test_handlers_bcrypt.py:641: only default backend is being tested
[ 172s] SKIPPED [4] passlib/tests/test_handlers_bcrypt.py:625: only default backend is being tested
[ 172s] SKIPPED [2] passlib/tests/utils.py:3310: only default backend is being tested
[ 172s] SKIPPED [2] passlib/tests/utils.py:3328: only default backend is being tested
[ 172s] SKIPPED [1] passlib/tests/utils.py:3349: no data for 'linux' platform (current host support = True)
[ 172s] SKIPPED [1] passlib/tests/utils.py:1322: handler doesn't provide salt info
[ 172s] SKIPPED [1] passlib/tests/utils.py:1396: handler doesn't provide salt info
[ 172s] SKIPPED [1] passlib/tests/utils.py:1422: handler doesn't provide salt info
[ 172s] SKIPPED [1] passlib/tests/utils.py:1485: handler doesn't provide salt info
[ 172s] SKIPPED [1] passlib/tests/utils.py:1541: handler doesn't provide salt info
[ 172s] SKIPPED [3] passlib/tests/test_handlers_django.py:82: Django <= 1.9 not installed
[ 172s] SKIPPED [3] passlib/tests/test_handlers_django.py:97: Django <= 1.9 not installed
[ 172s] SKIPPED [1] passlib/tests/test_handlers_django.py:82: Django <= 2.0 not installed
[ 172s] SKIPPED [1] passlib/tests/test_handlers_django.py:97: Django <= 2.0 not installed
[ 172s] SKIPPED [1] passlib/tests/test_handlers_django.py:397: legacy 1.6 workflow not supported
[ 172s] ==== 14 failed, 2130 passed, 2285 skipped, 28 warnings in 161.61s (0:02:41) ====
Full process how the package is tested and version of other packages is in the full log.