importosimportmockimportpytestimporttghere=os.path.dirname(__file__)# HACK:defpytest_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 sentineldefpytest_ignore_collect(path):# ignore all files outside the 'kallithea' directoryifnotstr(path).startswith(os.path.join(here,'kallithea')):returnTrue# 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',)ifstr(path).endswith(kallithea_ignore_paths):returnTrue@pytest.fixture()defdoctest_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)withmock.patch.object(m,'_',lambdas:s):yieldifgetattr(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-introspectionpytest.register_assert_rewrite('kallithea.tests')