mirror of
https://github.com/sphinx-doc/sphinx.git
synced 2025-02-25 18:55:22 -06:00
50 lines
1.6 KiB
Python
50 lines
1.6 KiB
Python
"""Test the ``UnreferencedFootnotesDetector`` transform."""
|
|
|
|
from __future__ import annotations
|
|
|
|
from typing import TYPE_CHECKING
|
|
|
|
from sphinx._cli.util.errors import strip_escape_sequences
|
|
|
|
if TYPE_CHECKING:
|
|
from pathlib import Path
|
|
|
|
from sphinx.testing.util import SphinxTestApp
|
|
|
|
|
|
def test_warnings(make_app: type[SphinxTestApp], tmp_path: Path) -> None:
|
|
"""Test that warnings are emitted for unreferenced footnotes."""
|
|
tmp_path.joinpath('conf.py').touch()
|
|
tmp_path.joinpath('index.rst').write_text(
|
|
"""
|
|
Title
|
|
=====
|
|
[1]_ [#label2]_
|
|
|
|
.. [1] This is a normal footnote.
|
|
.. [2] This is a normal footnote.
|
|
.. [2] This is a normal footnote.
|
|
.. [3] This is a normal footnote.
|
|
.. [*] This is a symbol footnote.
|
|
.. [#] This is an auto-numbered footnote.
|
|
.. [#label1] This is an auto-numbered footnote with a label.
|
|
.. [#label1] This is an auto-numbered footnote with a label.
|
|
.. [#label2] This is an auto-numbered footnote with a label.
|
|
""",
|
|
encoding='utf8',
|
|
)
|
|
app = make_app(srcdir=tmp_path)
|
|
app.build()
|
|
warnings = strip_escape_sequences(app.warning.getvalue()).lstrip()
|
|
warnings = warnings.replace(str(tmp_path / 'index.rst'), 'source/index.rst')
|
|
assert (
|
|
warnings
|
|
== """\
|
|
source/index.rst:8: WARNING: Duplicate explicit target name: "2". [docutils]
|
|
source/index.rst:13: WARNING: Duplicate explicit target name: "label1". [docutils]
|
|
source/index.rst:9: WARNING: Footnote [3] is not referenced. [ref.footnote]
|
|
source/index.rst:10: WARNING: Footnote [*] is not referenced. [ref.footnote]
|
|
source/index.rst:11: WARNING: Footnote [#] is not referenced. [ref.footnote]
|
|
"""
|
|
)
|