summaryrefslogtreecommitdiffstats
path: root/tests/conftest.py
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--tests/conftest.py30
1 files changed, 25 insertions, 5 deletions
diff --git a/tests/conftest.py b/tests/conftest.py
index 1b909bd..1c8d525 100644
--- a/tests/conftest.py
+++ b/tests/conftest.py
@@ -1,14 +1,25 @@
+from __future__ import annotations
+
import os
+import sys
from pathlib import Path
+from typing import TYPE_CHECKING
import docutils
import pytest
import sphinx
import sphinx.locale
+import sphinx.pycode
+from sphinx.testing.util import _clean_up_global_state
+
+if TYPE_CHECKING:
+ from collections.abc import Iterator
-def _init_console(locale_dir=sphinx.locale._LOCALE_DIR, catalog='sphinx'):
+def _init_console(
+ locale_dir: str | None = sphinx.locale._LOCALE_DIR, catalog: str = 'sphinx',
+) -> tuple[sphinx.locale.NullTranslations, bool]:
"""Monkeypatch ``init_console`` to skip its action.
Some tests rely on warning messages in English. We don't want
@@ -20,7 +31,7 @@ def _init_console(locale_dir=sphinx.locale._LOCALE_DIR, catalog='sphinx'):
sphinx.locale.init_console = _init_console
-pytest_plugins = 'sphinx.testing.fixtures'
+pytest_plugins = ['sphinx.testing.fixtures']
# Exclude 'roots' dirs for pytest test collector
collect_ignore = ['roots']
@@ -29,12 +40,21 @@ os.environ['SPHINX_AUTODOC_RELOAD_MODULES'] = '1'
@pytest.fixture(scope='session')
-def rootdir():
- return Path(__file__).parent.absolute() / 'roots'
+def rootdir() -> Path:
+ return Path(__file__).parent.resolve() / 'roots'
-def pytest_report_header(config):
+def pytest_report_header(config: pytest.Config) -> str:
header = f"libraries: Sphinx-{sphinx.__display_version__}, docutils-{docutils.__version__}"
if hasattr(config, '_tmp_path_factory'):
header += f"\nbase tmp_path: {config._tmp_path_factory.getbasetemp()}"
return header
+
+
+@pytest.fixture(autouse=True)
+def _cleanup_docutils() -> Iterator[None]:
+ saved_path = sys.path
+ yield # run the test
+ sys.path[:] = saved_path
+
+ _clean_up_global_state()