annotate conftest.py @ 8582:35af0bd45bf3

diff: drop per file ignore-whitespace and context - it didn't work and had conceptual issue (Issue #344) Diffs are currently generated at the low level as one big diff between two vcs resisions, provided global values for diff context size and flag for ignoring whitespace. All files use the same flags. There is no way to actually compute the full diff using these use per file flags, and no simple and efficient way to add it. The best option is thus to drop the failed attempt at making it per file, and just rely on the simple global flags in the URL. The links for changing whitespace and context is sometimes shown for the whole "page", and sometimes next to the diff for one file. For now, keep showing the link in these places, but make sure it navigates back to the FID of the section where the link was clicked. The implementation is completely rewritten and moved to a more appropriate location in helpers. With a more clean implementation, we also consistently use the simple getters to extract values from the URL.
author Mads Kiilerich <mads@kiilerich.com>
date Sun, 21 Jun 2020 23:20:12 +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')