fix(test): retrofit deprecations

pathlib support and sphinx.testing.path deprecation in Sphinx ver. 9  was
announced in Sphinx ver. 6 and enabled in Sphinx ver. 7, hence there are three
different environment states to support in regards to paths in Sphinx testing
environments.
This commit is contained in:
Tiara Rodney 2025-06-28 00:25:46 +02:00
parent a4fd97b55a
commit 6321c3f11b
No known key found for this signature in database
GPG key ID: 5F43FAB4FBE5B5EB
2 changed files with 20 additions and 3 deletions

View file

@ -5,10 +5,25 @@ import os
from pathlib import Path
import shutil
from typing import Any, Tuple, Callable, Iterator, Dict
import warnings
import pytest
try:
from sphinx.deprecation import RemovedInSphinx90Warning
except ImportError:
RemovedInSphinx90Warning = None
from sphinx.testing.util import SphinxTestApp
from sphinx.testing.fixtures import make_app, test_params
USE_PATHLIB = True
with warnings.catch_warnings(record=True) as w:
warnings.simplefilter('always')
from sphinx.testing.path import path as sphinxtesting_path
if w and issubclass(w[-1].message.__class__, RemovedInSphinx90Warning):
USE_PATHLIB = True
else:
USE_PATHLIB = False
from byteb4rb1e.testing.pytest.fixtures import current_test
@ -75,9 +90,10 @@ def mock_sphinx_testapp(
builddir = basedir / 'build'
shutil.copytree(kwargs['srcdir'], srcdir, dirs_exist_ok=True)
kwargs['srcdir'] = srcdir
kwargs.setdefault('builddir', builddir)
kwargs['srcdir'] = sphinxtesting_path(srcdir) if not USE_PATHLIB else srcdir
kwargs.setdefault('builddir', sphinxtesting_path(builddir) if not USE_PATHLIB else builddir)
app_ = make_app(*args, **kwargs)

View file

@ -1,3 +1,4 @@
from pathlib import Path
import pytest
@ -26,6 +27,6 @@ def test_mock_sphinx_testapp(mock_sphinx_testapp, mock_sphinx_testsrc_dir):
app = mock_sphinx_testapp(srcdir=srcdir)
assert app.builder is not None
assert app.srcdir.samefile(srcdir) is False # Should be copied to internal src
assert Path(app.srcdir).samefile(srcdir) is False # Should be copied to internal src
app.build(force_all=True)