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
--- a/pytest.ini	Fri Jun 07 01:25:27 2019 +0200
+++ b/pytest.ini	Tue Jun 11 20:53:33 2019 +0200
@@ -7,3 +7,6 @@
     -rfEsxXw
     # Shorter scrollbacks; less stuff to scroll through
     --tb=short
+    #
+    --doctest-modules
+    --doctest-ignore-import-errors