Mercurial > kallithea
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 |
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') |