annotate conftest.py @ 8984:55715fe0a8e1 stable

meta: update copyrights
author Mads Kiilerich <mads@kiilerich.com>
date Fri, 31 Mar 2023 21:17:02 +0200
parents 9948ed9916c4
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
7811
0a277465fddf scripts: initial run of import cleanup using isort
Mads Kiilerich <mads@kiilerich.com>
parents: 7752
diff changeset
1 import os
0a277465fddf scripts: initial run of import cleanup using isort
Mads Kiilerich <mads@kiilerich.com>
parents: 7752
diff changeset
2
7734
afa5e0bdb76f tests: run doctests via pytest
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents:
diff changeset
3 import mock
afa5e0bdb76f tests: run doctests via pytest
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents:
diff changeset
4 import pytest
8208
9948ed9916c4 py3: work around incompatibility between pytest, py3 inspect, and tg
Mads Kiilerich <mads@kiilerich.com>
parents: 8157
diff changeset
5 import tg
7811
0a277465fddf scripts: initial run of import cleanup using isort
Mads Kiilerich <mads@kiilerich.com>
parents: 7752
diff changeset
6
7734
afa5e0bdb76f tests: run doctests via pytest
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents:
diff changeset
7
afa5e0bdb76f tests: run doctests via pytest
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents:
diff changeset
8 here = os.path.dirname(__file__)
afa5e0bdb76f tests: run doctests via pytest
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents:
diff changeset
9
8208
9948ed9916c4 py3: work around incompatibility between pytest, py3 inspect, and tg
Mads Kiilerich <mads@kiilerich.com>
parents: 8157
diff changeset
10 # HACK:
9948ed9916c4 py3: work around incompatibility between pytest, py3 inspect, and tg
Mads Kiilerich <mads@kiilerich.com>
parents: 8157
diff changeset
11 def pytest_configure():
9948ed9916c4 py3: work around incompatibility between pytest, py3 inspect, and tg
Mads Kiilerich <mads@kiilerich.com>
parents: 8157
diff changeset
12 # Register global dummy tg.context to avoid "TypeError: No object (name: context) has been registered for this thread"
9948ed9916c4 py3: work around incompatibility between pytest, py3 inspect, and tg
Mads Kiilerich <mads@kiilerich.com>
parents: 8157
diff changeset
13 tg.request_local.context._push_object(tg.util.bunch.Bunch())
9948ed9916c4 py3: work around incompatibility between pytest, py3 inspect, and tg
Mads Kiilerich <mads@kiilerich.com>
parents: 8157
diff changeset
14 # could be removed again after use with
9948ed9916c4 py3: work around incompatibility between pytest, py3 inspect, and tg
Mads Kiilerich <mads@kiilerich.com>
parents: 8157
diff changeset
15 # tg.request_local.context._pop_object ... but we keep it around forever as
9948ed9916c4 py3: work around incompatibility between pytest, py3 inspect, and tg
Mads Kiilerich <mads@kiilerich.com>
parents: 8157
diff changeset
16 # a reasonable sentinel
9948ed9916c4 py3: work around incompatibility between pytest, py3 inspect, and tg
Mads Kiilerich <mads@kiilerich.com>
parents: 8157
diff changeset
17
7734
afa5e0bdb76f tests: run doctests via pytest
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents:
diff changeset
18 def pytest_ignore_collect(path):
afa5e0bdb76f tests: run doctests via pytest
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents:
diff changeset
19 # ignore all files outside the 'kallithea' directory
afa5e0bdb76f tests: run doctests via pytest
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents:
diff changeset
20 if not str(path).startswith(os.path.join(here, 'kallithea')):
afa5e0bdb76f tests: run doctests via pytest
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents:
diff changeset
21 return True
afa5e0bdb76f tests: run doctests via pytest
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents:
diff changeset
22
afa5e0bdb76f tests: run doctests via pytest
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents:
diff changeset
23 # during doctest verification, normally all python files will be imported.
afa5e0bdb76f tests: run doctests via pytest
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents:
diff changeset
24 # Thus, files that cannot be imported normally should be ignored.
afa5e0bdb76f tests: run doctests via pytest
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents:
diff changeset
25 # Files that generate ImportErrors are ignored via
afa5e0bdb76f tests: run doctests via pytest
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents:
diff changeset
26 # '--doctest-ignore-import-errors' (pytest.ini)
afa5e0bdb76f tests: run doctests via pytest
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents:
diff changeset
27 kallithea_ignore_paths = (
afa5e0bdb76f tests: run doctests via pytest
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents:
diff changeset
28 # AttributeError: 'module' object has no attribute 'config'
afa5e0bdb76f tests: run doctests via pytest
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents:
diff changeset
29 '/kallithea/alembic/env.py',
afa5e0bdb76f tests: run doctests via pytest
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents:
diff changeset
30 # collection of the following file messes up the rest of test execution
afa5e0bdb76f tests: run doctests via pytest
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents:
diff changeset
31 '/kallithea/tests/scripts/manual_test_concurrency.py',
afa5e0bdb76f tests: run doctests via pytest
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents:
diff changeset
32 )
afa5e0bdb76f tests: run doctests via pytest
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents:
diff changeset
33 if str(path).endswith(kallithea_ignore_paths):
afa5e0bdb76f tests: run doctests via pytest
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents:
diff changeset
34 return True
7752
3929ff3f21c6 tests: introduce doctest_mock_ugettext to allow doctests of localized code
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 7734
diff changeset
35
3929ff3f21c6 tests: introduce doctest_mock_ugettext to allow doctests of localized code
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 7734
diff changeset
36 @pytest.fixture()
3929ff3f21c6 tests: introduce doctest_mock_ugettext to allow doctests of localized code
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 7734
diff changeset
37 def doctest_mock_ugettext(request):
3929ff3f21c6 tests: introduce doctest_mock_ugettext to allow doctests of localized code
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 7734
diff changeset
38 """Mock ugettext ('_') in the module using this fixture.
3929ff3f21c6 tests: introduce doctest_mock_ugettext to allow doctests of localized code
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 7734
diff changeset
39
3929ff3f21c6 tests: introduce doctest_mock_ugettext to allow doctests of localized code
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 7734
diff changeset
40 Intended to be used for doctests.
3929ff3f21c6 tests: introduce doctest_mock_ugettext to allow doctests of localized code
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 7734
diff changeset
41
3929ff3f21c6 tests: introduce doctest_mock_ugettext to allow doctests of localized code
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 7734
diff changeset
42 In a doctest, enable this fixture using:
3929ff3f21c6 tests: introduce doctest_mock_ugettext to allow doctests of localized code
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 7734
diff changeset
43 >>> getfixture('doctest_mock_ugettext')
3929ff3f21c6 tests: introduce doctest_mock_ugettext to allow doctests of localized code
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 7734
diff changeset
44 """
3929ff3f21c6 tests: introduce doctest_mock_ugettext to allow doctests of localized code
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 7734
diff changeset
45 m = __import__(request.module.__name__, globals(), locals(), [None], 0)
3929ff3f21c6 tests: introduce doctest_mock_ugettext to allow doctests of localized code
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 7734
diff changeset
46 with mock.patch.object(m, '_', lambda s: s):
3929ff3f21c6 tests: introduce doctest_mock_ugettext to allow doctests of localized code
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 7734
diff changeset
47 yield
8157
56de50d57ff0 pytest: fix register_assert_rewrite call
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 7812
diff changeset
48
56de50d57ff0 pytest: fix register_assert_rewrite call
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 7812
diff changeset
49 if getattr(pytest, 'register_assert_rewrite', None):
56de50d57ff0 pytest: fix register_assert_rewrite call
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 7812
diff changeset
50 # make sure that all asserts under kallithea/tests benefit from advanced
56de50d57ff0 pytest: fix register_assert_rewrite call
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 7812
diff changeset
51 # assert reporting with pytest-3.0.0+, including api/api_base.py,
56de50d57ff0 pytest: fix register_assert_rewrite call
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 7812
diff changeset
52 # models/common.py etc.
56de50d57ff0 pytest: fix register_assert_rewrite call
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 7812
diff changeset
53 # See also: https://docs.pytest.org/en/latest/assert.html#advanced-assertion-introspection
56de50d57ff0 pytest: fix register_assert_rewrite call
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 7812
diff changeset
54 pytest.register_assert_rewrite('kallithea.tests')