Changeset - afa5e0bdb76f
[Not reviewed]
default
0 1 1
Thomas De Schampheleire - 6 years ago 2019-06-11 20:53:33
thomas.de_schampheleire@nokia.com
Grafted from: cf85351f6642
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
2 files changed with 27 insertions and 0 deletions:
0 comments (0 inline, 0 general)
conftest.py
Show inline comments
 
new file 100644
 
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
pytest.ini
Show inline comments
 
@@ -7,3 +7,6 @@ addopts =
 
    -rfEsxXw
 
    # Shorter scrollbacks; less stuff to scroll through
 
    --tb=short
 
    #
 
    --doctest-modules
 
    --doctest-ignore-import-errors
0 comments (0 inline, 0 general)