2024-03-16 12:06:58 -05:00
|
|
|
from __future__ import annotations
|
|
|
|
|
2024-07-22 20:38:45 -05:00
|
|
|
import gettext
|
2023-09-13 16:58:35 -05:00
|
|
|
import os
|
2024-01-16 20:38:46 -06:00
|
|
|
import sys
|
2023-07-27 18:39:12 -05:00
|
|
|
from pathlib import Path
|
2024-03-16 12:06:58 -05:00
|
|
|
from typing import TYPE_CHECKING
|
2017-01-06 09:46:26 -06:00
|
|
|
|
2018-08-25 21:28:06 -05:00
|
|
|
import docutils
|
2017-05-07 02:46:44 -05:00
|
|
|
import pytest
|
2018-02-19 07:39:14 -06:00
|
|
|
|
2018-08-25 21:28:06 -05:00
|
|
|
import sphinx
|
2023-01-31 16:10:48 -06:00
|
|
|
import sphinx.locale
|
2024-01-16 20:38:46 -06:00
|
|
|
import sphinx.pycode
|
2024-01-18 17:30:22 -06:00
|
|
|
from sphinx.testing.util import _clean_up_global_state
|
2017-01-03 07:24:00 -06:00
|
|
|
|
2024-03-16 12:06:58 -05:00
|
|
|
if TYPE_CHECKING:
|
2024-04-08 21:26:44 -05:00
|
|
|
from collections.abc import Iterator
|
2024-03-16 12:06:58 -05:00
|
|
|
|
2023-01-31 16:10:48 -06:00
|
|
|
|
2024-03-16 12:06:58 -05:00
|
|
|
def _init_console(
|
2024-08-11 08:58:56 -05:00
|
|
|
locale_dir: str | None = sphinx.locale._LOCALE_DIR,
|
|
|
|
catalog: str = 'sphinx',
|
2024-07-22 20:38:45 -05:00
|
|
|
) -> tuple[gettext.NullTranslations, bool]:
|
2023-01-31 16:10:48 -06:00
|
|
|
"""Monkeypatch ``init_console`` to skip its action.
|
|
|
|
|
|
|
|
Some tests rely on warning messages in English. We don't want
|
|
|
|
CLI tests to bleed over those tests and make their warnings
|
|
|
|
translated.
|
|
|
|
"""
|
2024-07-22 20:38:45 -05:00
|
|
|
return gettext.NullTranslations(), False
|
2023-01-31 16:10:48 -06:00
|
|
|
|
|
|
|
|
|
|
|
sphinx.locale.init_console = _init_console
|
|
|
|
|
2024-03-16 12:06:58 -05:00
|
|
|
pytest_plugins = ['sphinx.testing.fixtures']
|
2017-01-03 07:24:00 -06:00
|
|
|
|
2017-10-26 10:59:46 -05:00
|
|
|
# Exclude 'roots' dirs for pytest test collector
|
|
|
|
collect_ignore = ['roots']
|
|
|
|
|
2023-09-13 16:58:35 -05:00
|
|
|
os.environ['SPHINX_AUTODOC_RELOAD_MODULES'] = '1'
|
|
|
|
|
2017-01-03 07:24:00 -06:00
|
|
|
|
2017-05-07 02:46:44 -05:00
|
|
|
@pytest.fixture(scope='session')
|
2024-03-16 12:06:58 -05:00
|
|
|
def rootdir() -> Path:
|
2024-01-16 20:38:46 -06:00
|
|
|
return Path(__file__).parent.resolve() / 'roots'
|
2017-12-22 12:50:49 -06:00
|
|
|
|
|
|
|
|
2024-03-16 12:06:58 -05:00
|
|
|
def pytest_report_header(config: pytest.Config) -> str:
|
2024-08-11 08:58:56 -05:00
|
|
|
header = f'libraries: Sphinx-{sphinx.__display_version__}, docutils-{docutils.__version__}'
|
2019-02-01 04:01:51 -06:00
|
|
|
if hasattr(config, '_tmp_path_factory'):
|
2024-08-11 08:58:56 -05:00
|
|
|
header += f'\nbase tmp_path: {config._tmp_path_factory.getbasetemp()}'
|
2019-02-01 04:01:51 -06:00
|
|
|
return header
|
2024-01-16 20:38:46 -06:00
|
|
|
|
|
|
|
|
|
|
|
@pytest.fixture(autouse=True)
|
2024-04-08 21:26:44 -05:00
|
|
|
def _cleanup_docutils() -> Iterator[None]:
|
2024-01-16 20:38:46 -06:00
|
|
|
saved_path = sys.path
|
|
|
|
yield # run the test
|
|
|
|
sys.path[:] = saved_path
|
|
|
|
|
2024-01-18 17:30:22 -06:00
|
|
|
_clean_up_global_state()
|