summaryrefslogtreecommitdiffstats
path: root/tests/test_transforms_move_module_targets.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/test_transforms_move_module_targets.py')
-rw-r--r--tests/test_transforms_move_module_targets.py77
1 files changed, 77 insertions, 0 deletions
diff --git a/tests/test_transforms_move_module_targets.py b/tests/test_transforms_move_module_targets.py
new file mode 100644
index 0000000..e0e9f1d
--- /dev/null
+++ b/tests/test_transforms_move_module_targets.py
@@ -0,0 +1,77 @@
+import pytest
+from docutils import nodes
+
+from sphinx import addnodes
+from sphinx.testing.util import SphinxTestApp
+from sphinx.transforms import MoveModuleTargets
+
+CONTENT_PY = """\
+move-module-targets
+===================
+
+.. py:module:: fish_licence.halibut
+"""
+CONTENT_JS = """\
+move-module-targets
+===================
+
+.. js:module:: fish_licence.halibut
+"""
+
+
+@pytest.mark.parametrize('content', [
+ CONTENT_PY, # Python
+ CONTENT_JS, # JavaScript
+])
+@pytest.mark.usefixtures("rollback_sysmodules")
+def test_move_module_targets(tmp_path, content):
+ # Test for the MoveModuleTargets transform
+ tmp_path.joinpath("conf.py").touch()
+ tmp_path.joinpath("index.rst").write_text(content, encoding="utf-8")
+
+ app = SphinxTestApp('dummy', srcdir=tmp_path)
+ app.build(force_all=True)
+ document = app.env.get_doctree('index')
+ section = document[0]
+
+ # target ID has been lifted into the section node
+ assert section["ids"] == ['module-fish_licence.halibut', 'move-module-targets']
+ # nodes.target has been removed from 'section'
+ assert isinstance(section[0], nodes.title)
+ assert isinstance(section[1], addnodes.index)
+ assert len(section) == 2
+
+
+@pytest.mark.usefixtures("rollback_sysmodules")
+def test_move_module_targets_no_section(tmp_path):
+ # Test for the MoveModuleTargets transform
+ tmp_path.joinpath("conf.py").touch()
+ tmp_path.joinpath("index.rst").write_text(".. py:module:: fish_licence.halibut\n", encoding="utf-8")
+
+ app = SphinxTestApp('dummy', srcdir=tmp_path)
+ app.build(force_all=True)
+ document = app.env.get_doctree('index')
+
+ assert document["ids"] == []
+
+
+@pytest.mark.usefixtures("rollback_sysmodules")
+def test_move_module_targets_disabled(tmp_path):
+ # Test for the MoveModuleTargets transform
+ tmp_path.joinpath("conf.py").touch()
+ tmp_path.joinpath("index.rst").write_text(CONTENT_PY, encoding="utf-8")
+
+ app = SphinxTestApp('dummy', srcdir=tmp_path)
+ app.registry.transforms.remove(MoveModuleTargets) # disable the transform
+ app.build(force_all=True)
+ document = app.env.get_doctree('index')
+ section = document[0]
+
+ # target ID is not lifted into the section node
+ assert section["ids"] == ['move-module-targets']
+ assert section[2]["ids"] == ['module-fish_licence.halibut']
+ # nodes.target remains in 'section'
+ assert isinstance(section[0], nodes.title)
+ assert isinstance(section[1], addnodes.index)
+ assert isinstance(section[2], nodes.target)
+ assert len(section) == 3