conftest.py
54 lines
| 2.0 KiB
| text/x-python
|
PythonLexer
Mads Kiilerich
|
r7718 | import os | ||
Thomas De Schampheleire
|
r7640 | import mock | ||
import pytest | ||||
Mads Kiilerich
|
r8088 | import tg | ||
Mads Kiilerich
|
r7718 | |||
Thomas De Schampheleire
|
r7640 | |||
here = os.path.dirname(__file__) | ||||
Mads Kiilerich
|
r8088 | # 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 | ||||
Thomas De Schampheleire
|
r7640 | 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 | ||||
Thomas De Schampheleire
|
r7658 | |||
@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 | ||||
Thomas De Schampheleire
|
r8037 | |||
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') | ||||