summaryrefslogtreecommitdiffstats
path: root/tests/test_builders.py
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-15 17:56:50 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-15 17:56:50 +0000
commit6637322c8ab1c5ff80a2b6ca59c9ba1d40aeba2c (patch)
tree04e41667e9eae835f5d88bda4f6d3f5c2664de01 /tests/test_builders.py
parentInitial commit. (diff)
downloadsphinx-rtd-theme-6637322c8ab1c5ff80a2b6ca59c9ba1d40aeba2c.tar.xz
sphinx-rtd-theme-6637322c8ab1c5ff80a2b6ca59c9ba1d40aeba2c.zip
Adding upstream version 2.0.0+dfsg.upstream/2.0.0+dfsgupstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'tests/test_builders.py')
-rw-r--r--tests/test_builders.py87
1 files changed, 87 insertions, 0 deletions
diff --git a/tests/test_builders.py b/tests/test_builders.py
new file mode 100644
index 0000000..d3d3c51
--- /dev/null
+++ b/tests/test_builders.py
@@ -0,0 +1,87 @@
+import os
+
+import pytest
+import sphinx
+from sphinx import addnodes
+try:
+ # Available from Sphinx 2.0
+ from sphinx.builders.dirhtml import DirectoryHTMLBuilder
+ from sphinx.builders.singlehtml import SingleFileHTMLBuilder
+except ImportError:
+ from sphinx.builders.html import (
+ DirectoryHTMLBuilder,
+ SingleFileHTMLBuilder,
+ )
+
+from .util import build_all
+
+
+def test_basic():
+ for (app, status, warning) in build_all('test-basic'):
+ assert app.env.get_doctree('index').traverse(addnodes.toctree)
+ content = open(os.path.join(app.outdir, 'index.html')).read()
+
+ if isinstance(app.builder, DirectoryHTMLBuilder):
+ search = (
+ '<div class="toctree-wrapper compound">\n'
+ '<ul>\n'
+ '<li class="toctree-l1">'
+ '<a class="reference internal" href="foo/">foo</a>'
+ '<ul>\n'
+ '<li class="toctree-l2">'
+ '<a class="reference internal" href="bar/">bar</a></li>\n'
+ '</ul>\n'
+ '</li>\n'
+ '</ul>\n'
+ '</div>'
+ )
+ assert search in content
+ elif isinstance(app.builder, SingleFileHTMLBuilder):
+ search = (
+ '<ul>\n'
+ '<li class="toctree-l1">'
+ '<a class="reference internal" href="index.html#document-foo">foo</a>'
+ '</li>\n'
+ '</ul>'
+ )
+ assert search in content
+ else:
+ search = (
+ '<div class="toctree-wrapper compound">\n'
+ '<ul>\n'
+ '<li class="toctree-l1">'
+ '<a class="reference internal" href="foo.html">foo</a>'
+ '<ul>\n'
+ '<li class="toctree-l2">'
+ '<a class="reference internal" href="bar.html">bar</a></li>\n'
+ '</ul>\n'
+ '</li>\n'
+ '</ul>\n'
+ '</div>'
+ )
+ assert search in content, ('Missing search with builder {0}'
+ .format(app.builder.name))
+
+
+def test_empty():
+ """Local TOC is showing, as toctree was empty"""
+ for (app, status, warning) in build_all('test-empty'):
+ assert app.env.get_doctree('index').traverse(addnodes.toctree)
+ content = open(os.path.join(app.outdir, 'index.html')).read()
+ global_toc = '<div class="toctree-wrapper compound">\n</div>'
+ local_toc = (
+ '<div class="local-toc"><ul>\n'
+ '<li><a class="reference internal" href="#">test-empty</a></li>'
+ '</ul>\n</div>'
+ )
+ assert global_toc in content
+ assert local_toc not in content
+
+
+def test_missing_toctree():
+ """Local TOC is showing, as toctree was missing"""
+ for (app, status, warning) in build_all('test-missing-toctree'):
+ assert app.env.get_doctree('index').traverse(addnodes.toctree) == []
+ content = open(os.path.join(app.outdir, 'index.html')).read()
+ assert '<div class="toctree' not in content
+ assert '<div class="local-toc">' in content