summaryrefslogtreecommitdiff
path: root/tests/test_ext_autosummary.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/test_ext_autosummary.py')
-rw-r--r--tests/test_ext_autosummary.py93
1 files changed, 90 insertions, 3 deletions
diff --git a/tests/test_ext_autosummary.py b/tests/test_ext_autosummary.py
index aa075a9e6..a65826141 100644
--- a/tests/test_ext_autosummary.py
+++ b/tests/test_ext_autosummary.py
@@ -19,7 +19,10 @@ from sphinx import addnodes
from sphinx.ext.autosummary import (
autosummary_table, autosummary_toc, mangle_signature, import_by_name, extract_summary
)
-from sphinx.ext.autosummary.generate import AutosummaryEntry, generate_autosummary_docs, main as autogen_main
+from sphinx.ext.autosummary.generate import (
+ AutosummaryEntry, generate_autosummary_content, generate_autosummary_docs,
+ main as autogen_main
+)
from sphinx.testing.util import assert_node, etree_parse
from sphinx.util.docutils import new_document
from sphinx.util.osutil import cd
@@ -189,6 +192,83 @@ def test_escaping(app, status, warning):
assert str_content(title) == 'underscore_module_'
+@pytest.mark.sphinx(testroot='ext-autosummary')
+def test_autosummary_generate_content_for_module(app):
+ import autosummary_dummy_module
+ template = Mock()
+
+ generate_autosummary_content('autosummary_dummy_module', autosummary_dummy_module, None,
+ template, None, False, app, False, {})
+ assert template.render.call_args[0][0] == 'module'
+
+ context = template.render.call_args[0][1]
+ assert context['members'] == ['Exc', 'Foo', '_Baz', '_Exc', '__builtins__',
+ '__cached__', '__doc__', '__file__', '__name__',
+ '__package__', '_quux', 'bar', 'qux']
+ assert context['functions'] == ['bar']
+ assert context['all_functions'] == ['_quux', 'bar']
+ assert context['classes'] == ['Foo']
+ assert context['all_classes'] == ['Foo', '_Baz']
+ assert context['exceptions'] == ['Exc']
+ assert context['all_exceptions'] == ['Exc', '_Exc']
+ assert context['attributes'] == ['qux']
+ assert context['all_attributes'] == ['qux']
+ assert context['fullname'] == 'autosummary_dummy_module'
+ assert context['module'] == 'autosummary_dummy_module'
+ assert context['objname'] == ''
+ assert context['name'] == ''
+ assert context['objtype'] == 'module'
+
+
+@pytest.mark.sphinx(testroot='ext-autosummary')
+def test_autosummary_generate_content_for_module_skipped(app):
+ import autosummary_dummy_module
+ template = Mock()
+
+ def skip_member(app, what, name, obj, skip, options):
+ if name in ('Foo', 'bar', 'Exc'):
+ return True
+
+ app.connect('autodoc-skip-member', skip_member)
+ generate_autosummary_content('autosummary_dummy_module', autosummary_dummy_module, None,
+ template, None, False, app, False, {})
+ context = template.render.call_args[0][1]
+ assert context['members'] == ['_Baz', '_Exc', '__builtins__', '__cached__', '__doc__',
+ '__file__', '__name__', '__package__', '_quux', 'qux']
+ assert context['functions'] == []
+ assert context['classes'] == []
+ assert context['exceptions'] == []
+
+
+@pytest.mark.sphinx(testroot='ext-autosummary')
+def test_autosummary_generate_content_for_module_imported_members(app):
+ import autosummary_dummy_module
+ template = Mock()
+
+ generate_autosummary_content('autosummary_dummy_module', autosummary_dummy_module, None,
+ template, None, True, app, False, {})
+ assert template.render.call_args[0][0] == 'module'
+
+ context = template.render.call_args[0][1]
+ assert context['members'] == ['Exc', 'Foo', 'Union', '_Baz', '_Exc', '__builtins__',
+ '__cached__', '__doc__', '__file__', '__loader__',
+ '__name__', '__package__', '__spec__', '_quux',
+ 'bar', 'path', 'qux']
+ assert context['functions'] == ['bar']
+ assert context['all_functions'] == ['_quux', 'bar']
+ assert context['classes'] == ['Foo']
+ assert context['all_classes'] == ['Foo', '_Baz']
+ assert context['exceptions'] == ['Exc']
+ assert context['all_exceptions'] == ['Exc', '_Exc']
+ assert context['attributes'] == ['qux']
+ assert context['all_attributes'] == ['qux']
+ assert context['fullname'] == 'autosummary_dummy_module'
+ assert context['module'] == 'autosummary_dummy_module'
+ assert context['objname'] == ''
+ assert context['name'] == ''
+ assert context['objtype'] == 'module'
+
+
@pytest.mark.sphinx('dummy', testroot='ext-autosummary')
def test_autosummary_generate(app, status, warning):
app.builder.build_all()
@@ -205,14 +285,16 @@ def test_autosummary_generate(app, status, warning):
[nodes.tbody, (nodes.row,
nodes.row,
nodes.row,
+ nodes.row,
nodes.row)])])
assert_node(doctree[4][0], addnodes.toctree, caption="An autosummary")
- assert len(doctree[3][0][0][2]) == 4
+ assert len(doctree[3][0][0][2]) == 5
assert doctree[3][0][0][2][0].astext() == 'autosummary_dummy_module\n\n'
assert doctree[3][0][0][2][1].astext() == 'autosummary_dummy_module.Foo()\n\n'
- assert doctree[3][0][0][2][2].astext() == 'autosummary_dummy_module.Foo.Bar\n\n'
+ assert doctree[3][0][0][2][2].astext() == 'autosummary_dummy_module.Foo.Bar()\n\n'
assert doctree[3][0][0][2][3].astext() == 'autosummary_dummy_module.bar(x[, y])\n\n'
+ assert doctree[3][0][0][2][4].astext() == 'autosummary_dummy_module.qux\n\na module-level attribute'
module = (app.srcdir / 'generated' / 'autosummary_dummy_module.rst').read_text()
assert (' .. autosummary::\n'
@@ -237,6 +319,11 @@ def test_autosummary_generate(app, status, warning):
'\n'
'.. autoclass:: Foo.Bar\n' in FooBar)
+ qux = (app.srcdir / 'generated' / 'autosummary_dummy_module.qux.rst').read_text()
+ assert ('.. currentmodule:: autosummary_dummy_module\n'
+ '\n'
+ '.. autodata:: qux' in qux)
+
@pytest.mark.sphinx('dummy', testroot='ext-autosummary',
confoverrides={'autosummary_generate_overwrite': False})