annotate conftest.py @ 8829:01cb988e82a5

celery: celery-run should only initialize app and sqlalchemy after workers have been forked If app and SqlAlchemy were initialized before launching celery, the forked workers would inherit the database connection ... and that doesn't work. This could be handled by disposing the engine after forking the worker or before each task ... but it remains unnecessary and wrong to initialize the engine early when it isn't used, and then fork it.
author Mads Kiilerich <mads@kiilerich.com>
date Fri, 01 Jan 2021 18:04:16 +0100
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')