Changeset - 947cc923d73c
[Not reviewed]
stable
0 2 0
Mads Kiilerich (mads) - 5 months ago 2025-10-05 12:46:44
mads@kiilerich.com
conftest: Refactor (simplify and optimize) pytest_ignore_collect

Move constants out of the function, and return None explicitly. No big deal, but better.
2 files changed with 21 insertions and 15 deletions:
0 comments (0 inline, 0 general)
conftest.py
Show inline comments
 
import os
 
import pathlib
 

	
 
import mock
 
import pytest
 
import tg
 

	
 

	
 
here = os.path.dirname(__file__)
 

	
 
# HACK:
 
def pytest_configure():
 
    # Register global dummy tg.context to avoid "TypeError: No object (name: context) has been registered for this thread"
 
    tg.request_local.context._push_object(tg.util.bunch.Bunch())
 
    # could be removed again after use with
 
    # tg.request_local.context._pop_object ... but we keep it around forever as
 
    # a reasonable sentinel
 

	
 
here_kallithea = str(pathlib.Path(__file__).parent / 'kallithea')
 

	
 
# during doctest verification, normally all python files will be imported.
 
# Thus, files that cannot be imported normally should be ignored.
 
# Files that generate ImportErrors are ignored via
 
# '--doctest-ignore-import-errors' (pytest.ini)
 
kallithea_ignore_paths = (
 
    # AttributeError: 'module' object has no attribute 'config'
 
    '/kallithea/alembic/env.py',
 
    # collection of the following file messes up the rest of test execution
 
    '/kallithea/tests/scripts/manual_test_concurrency.py',
 
)
 

	
 
def pytest_ignore_collect(path):
 
    path = str(path)
 

	
 
    # ignore all files outside the 'kallithea' directory
 
    if not str(path).startswith(os.path.join(here, 'kallithea')):
 
    if not path.startswith(here_kallithea):
 
        return True
 

	
 
    # during doctest verification, normally all python files will be imported.
 
    # Thus, files that cannot be imported normally should be ignored.
 
    # Files that generate ImportErrors are ignored via
 
    # '--doctest-ignore-import-errors' (pytest.ini)
 
    kallithea_ignore_paths = (
 
        # AttributeError: 'module' object has no attribute 'config'
 
        '/kallithea/alembic/env.py',
 
        # collection of the following file messes up the rest of test execution
 
        '/kallithea/tests/scripts/manual_test_concurrency.py',
 
    )
 
    if str(path).endswith(kallithea_ignore_paths):
 
    if path.endswith(kallithea_ignore_paths):
 
        return True
 

	
 
    return None
 

	
 
@pytest.fixture()
 
def doctest_mock_ugettext(request):
 
    """Mock ugettext ('_') in the module using this fixture.
 

	
 
    Intended to be used for doctests.
 

	
 
    In a doctest, enable this fixture using:
 
        >>> getfixture('doctest_mock_ugettext')
 
    """
 
    m = __import__(request.module.__name__, globals(), locals(), [None], 0)
 
    with mock.patch.object(m, '_', lambda s: s):
 
        yield
 

	
 
if getattr(pytest, 'register_assert_rewrite', None):
 
    # make sure that all asserts under kallithea/tests benefit from advanced
 
    # assert reporting with pytest-3.0.0+, including api/api_base.py,
 
    # models/common.py etc.
 
    # See also: https://docs.pytest.org/en/latest/assert.html#advanced-assertion-introspection
 
    pytest.register_assert_rewrite('kallithea.tests')
scripts/deps.py
Show inline comments
 
@@ -17,96 +17,97 @@ celery
 
chardet
 
click
 
collections
 
configparser
 
copy
 
csv
 
ctypes
 
datetime
 
dateutil
 
decimal
 
decorator
 
difflib
 
distutils
 
docutils
 
email
 
errno
 
fileinput
 
functools
 
getpass
 
grp
 
hashlib
 
hmac
 
html
 
http
 
imp
 
importlib
 
inspect
 
io
 
ipaddr
 
IPython
 
isapi_wsgi
 
itertools
 
json
 
kajiki
 
ldap
 
logging
 
mako
 
markdown
 
mimetypes
 
mock
 
msvcrt
 
multiprocessing
 
operator
 
os
 
paginate
 
paginate_sqlalchemy
 
pam
 
paste
 
pathlib
 
pkg_resources
 
platform
 
posixpath
 
pprint
 
pwd
 
pyflakes
 
pytest
 
pytest_localserver
 
random
 
re
 
routes
 
setuptools
 
shlex
 
shutil
 
smtplib
 
socket
 
ssl
 
stat
 
string
 
struct
 
subprocess
 
sys
 
tarfile
 
tempfile
 
textwrap
 
tgext
 
threading
 
time
 
traceback
 
traitlets
 
types
 
typing
 
urllib
 
urlobject
 
uuid
 
warnings
 
webhelpers2
 
webob
 
webtest
 
whoosh
 
win32traceutil
 
zipfile
 
'''.split())
 

	
 
top_modules = set('''
 
kallithea.alembic
 
kallithea.bin
 
kallithea.config
0 comments (0 inline, 0 general)