Mercurial > kallithea
changeset 7734:afa5e0bdb76f
tests: run doctests via pytest
pytest can run doctests as part of the standard testsuite run. See
documentation at [1].
pytest will discover doctests in all python files it can find. However, some
files cannot be imported directly in this manner.
Fix this by adding a filter in conftest.py in the root directory. This code
could also live in kallithea/conftest.py, but it cannot be in
kallithea/tests/conftest.py because that level is deeper than the files we
want to filter.
[1] https://docs.pytest.org/en/latest/doctest.html
author | Thomas De Schampheleire <thomas.de_schampheleire@nokia.com> |
---|---|
date | Tue, 11 Jun 2019 20:53:33 +0200 |
parents | 460cfae11203 |
children | 50b376bcdcda |
files | conftest.py pytest.ini |
diffstat | 2 files changed, 27 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/conftest.py Tue Jun 11 20:53:33 2019 +0200 @@ -0,0 +1,24 @@ +import mock +import os +import pytest +import sys + +here = os.path.dirname(__file__) + +def pytest_ignore_collect(path): + # ignore all files outside the 'kallithea' directory + if not str(path).startswith(os.path.join(here, 'kallithea')): + return True + + # 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', + ) + if str(path).endswith(kallithea_ignore_paths): + return True