Files
@ 53142fd5af4e
Branch filter:
Location: kallithea/conftest.py - annotation
53142fd5af4e
2.0 KiB
text/x-python
lib/diffs: make sure that trailing tabs are indicated
Between the initial submission and final version of commit f79c40759d6f,
changes were made that turn out to be incorrect. The changes assume that the
later match on trailing tabs will 'win' from the plain 'tab' match. However,
Python 're' documentation says:
As the target string is scanned, REs separated by '|' are tried from
left to right. When one pattern completely matches, that branch is
accepted. This means that once A matches, B will not be tested further,
even if it would produce a longer overall match. In other words, the '|'
operator is never greedy.
https://docs.python.org/3.8/library/re.html
As a result, a trailing tab is seen as a plain tab and not highlighted in a
special way.
Unify the tab handling to make it unambiguous how they should be parsed.
The change diff mainly shows re group numbers shifting.
Between the initial submission and final version of commit f79c40759d6f,
changes were made that turn out to be incorrect. The changes assume that the
later match on trailing tabs will 'win' from the plain 'tab' match. However,
Python 're' documentation says:
As the target string is scanned, REs separated by '|' are tried from
left to right. When one pattern completely matches, that branch is
accepted. This means that once A matches, B will not be tested further,
even if it would produce a longer overall match. In other words, the '|'
operator is never greedy.
https://docs.python.org/3.8/library/re.html
As a result, a trailing tab is seen as a plain tab and not highlighted in a
special way.
Unify the tab handling to make it unambiguous how they should be parsed.
The change diff mainly shows re group numbers shifting.
0a277465fddf 0a277465fddf afa5e0bdb76f afa5e0bdb76f 9948ed9916c4 0a277465fddf afa5e0bdb76f afa5e0bdb76f afa5e0bdb76f 9948ed9916c4 9948ed9916c4 9948ed9916c4 9948ed9916c4 9948ed9916c4 9948ed9916c4 9948ed9916c4 9948ed9916c4 afa5e0bdb76f afa5e0bdb76f afa5e0bdb76f afa5e0bdb76f afa5e0bdb76f afa5e0bdb76f afa5e0bdb76f afa5e0bdb76f afa5e0bdb76f afa5e0bdb76f afa5e0bdb76f afa5e0bdb76f afa5e0bdb76f afa5e0bdb76f afa5e0bdb76f afa5e0bdb76f afa5e0bdb76f 3929ff3f21c6 3929ff3f21c6 3929ff3f21c6 3929ff3f21c6 3929ff3f21c6 3929ff3f21c6 3929ff3f21c6 3929ff3f21c6 3929ff3f21c6 3929ff3f21c6 3929ff3f21c6 3929ff3f21c6 3929ff3f21c6 56de50d57ff0 56de50d57ff0 56de50d57ff0 56de50d57ff0 56de50d57ff0 56de50d57ff0 56de50d57ff0 | import os
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
def pytest_ignore_collect(path):
# ignore all files outside the 'kallithea' directory
if not str(path).startswith(os.path.join(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):
return True
@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')
|