sphinx/tests/test_util/test_util.py

92 lines
3.2 KiB
Python

"""Tests util functions."""
from __future__ import annotations
import pytest
import sphinx.util
from sphinx.deprecation import RemovedInSphinx10Warning, RemovedInSphinx90Warning
from sphinx.errors import ExtensionError
from sphinx.util._files import DownloadFiles, FilenameUniqDict
from sphinx.util._importer import import_object
from sphinx.util._lines import parse_line_num_spec
from sphinx.util._uri import encode_uri, is_url
from sphinx.util.console import strip_colors
from sphinx.util.index_entries import _split_into, split_index_msg
from sphinx.util.matching import patfilter
from sphinx.util.nodes import (
caption_ref_re,
explicit_title_re,
nested_parse_with_titles,
split_explicit_title,
)
from sphinx.util.osutil import (
SEP,
copyfile,
ensuredir,
make_filename,
os_path,
relative_uri,
)
def test_ensuredir(tmp_path):
# Does not raise an exception for an existing directory.
ensuredir(tmp_path)
path = tmp_path / 'a' / 'b' / 'c'
ensuredir(path)
assert path.is_dir()
def test_exported_attributes():
# RemovedInSphinx90Warning
with pytest.warns(
RemovedInSphinx90Warning,
match=r"deprecated, use 'sphinx.util.index_entries.split_index_msg' instead.",
):
assert sphinx.util.split_index_msg is split_index_msg
with pytest.warns(RemovedInSphinx90Warning, match=r'deprecated.'):
assert sphinx.util.split_into is _split_into
with pytest.warns(
RemovedInSphinx90Warning,
match=r"deprecated, use 'sphinx.errors.ExtensionError' instead.",
):
assert sphinx.util.ExtensionError is ExtensionError
with pytest.warns(
RemovedInSphinx90Warning,
match=r"deprecated, use 'hashlib.md5' instead.",
):
_ = sphinx.util.md5
with pytest.warns(
RemovedInSphinx90Warning,
match=r"deprecated, use 'hashlib.sha1' instead.",
):
_ = sphinx.util.sha1
# RemovedInSphinx10Warning
with pytest.warns(RemovedInSphinx10Warning, match=r'deprecated.'):
assert sphinx.util.FilenameUniqDict is FilenameUniqDict
with pytest.warns(RemovedInSphinx10Warning, match=r'deprecated.'):
assert sphinx.util.DownloadFiles is DownloadFiles
with pytest.warns(RemovedInSphinx10Warning, match=r'deprecated.'):
assert sphinx.util.import_object is import_object
# Re-exported for backwards compatibility,
# but not currently deprecated
assert sphinx.util.encode_uri is encode_uri
assert sphinx.util.isurl is is_url
assert sphinx.util.parselinenos is parse_line_num_spec
assert sphinx.util.patfilter is patfilter
assert sphinx.util.strip_colors is strip_colors
assert sphinx.util.caption_ref_re is caption_ref_re
assert sphinx.util.explicit_title_re is explicit_title_re
assert sphinx.util.nested_parse_with_titles is nested_parse_with_titles
assert sphinx.util.split_explicit_title is split_explicit_title
assert sphinx.util.SEP is SEP
assert sphinx.util.copyfile is copyfile
assert sphinx.util.ensuredir is ensuredir
assert sphinx.util.make_filename is make_filename
assert sphinx.util.os_path is os_path
assert sphinx.util.relative_uri is relative_uri