diff options
Diffstat (limited to 'tests/test_ext_autosummary.py')
-rw-r--r-- | tests/test_ext_autosummary.py | 103 |
1 files changed, 78 insertions, 25 deletions
diff --git a/tests/test_ext_autosummary.py b/tests/test_ext_autosummary.py index a65826141..da7c53ec9 100644 --- a/tests/test_ext_autosummary.py +++ b/tests/test_ext_autosummary.py @@ -4,7 +4,7 @@ Test the autosummary extension. - :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS. + :copyright: Copyright 2007-2021 by the Sphinx team, see AUTHORS. :license: BSD, see LICENSE for details. """ @@ -16,13 +16,11 @@ import pytest from docutils import nodes 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_content, generate_autosummary_docs, - main as autogen_main -) +from sphinx.ext.autosummary import (autosummary_table, autosummary_toc, extract_summary, + import_by_name, mangle_signature) +from sphinx.ext.autosummary.generate import (AutosummaryEntry, generate_autosummary_content, + generate_autosummary_docs) +from sphinx.ext.autosummary.generate import 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 @@ -97,7 +95,10 @@ def test_extract_summary(capsys): # abbreviations doc = ['Blabla, i.e. bla.'] - assert extract_summary(doc, document) == 'Blabla, i.e.' + assert extract_summary(doc, document) == ' '.join(doc) + + doc = ['Blabla, et al. bla.'] + assert extract_summary(doc, document) == ' '.join(doc) # literal doc = ['blah blah::'] @@ -108,6 +109,12 @@ def test_extract_summary(capsys): '========='] assert extract_summary(doc, document) == 'blah blah' + # hyperlink target + doc = ['Do `this <https://www.sphinx-doc.org/>`_ and that. ' + 'blah blah blah.'] + assert (extract_summary(doc, document) == + 'Do `this <https://www.sphinx-doc.org/>`_ and that.') + _, err = capsys.readouterr() assert err == '' @@ -202,17 +209,17 @@ def test_autosummary_generate_content_for_module(app): 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['members'] == ['CONSTANT1', 'CONSTANT2', '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['attributes'] == ['CONSTANT1', 'qux'] + assert context['all_attributes'] == ['CONSTANT1', 'qux'] assert context['fullname'] == 'autosummary_dummy_module' assert context['module'] == 'autosummary_dummy_module' assert context['objname'] == '' @@ -233,8 +240,9 @@ def test_autosummary_generate_content_for_module_skipped(app): 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['members'] == ['CONSTANT1', 'CONSTANT2', '_Baz', '_Exc', '__builtins__', + '__cached__', '__doc__', '__file__', '__name__', + '__package__', '_quux', 'qux'] assert context['functions'] == [] assert context['classes'] == [] assert context['exceptions'] == [] @@ -250,18 +258,18 @@ def test_autosummary_generate_content_for_module_imported_members(app): 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['members'] == ['CONSTANT1', 'CONSTANT2', '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['attributes'] == ['CONSTANT1', 'qux'] + assert context['all_attributes'] == ['CONSTANT1', 'qux'] assert context['fullname'] == 'autosummary_dummy_module' assert context['module'] == 'autosummary_dummy_module' assert context['objname'] == '' @@ -286,21 +294,28 @@ def test_autosummary_generate(app, status, warning): 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]) == 5 + assert len(doctree[3][0][0][2]) == 6 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][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' + assert doctree[3][0][0][2][3].astext() == 'autosummary_dummy_module.Foo.value\n\ndocstring' + assert doctree[3][0][0][2][4].astext() == 'autosummary_dummy_module.bar(x[, y])\n\n' + assert doctree[3][0][0][2][5].astext() == 'autosummary_dummy_module.qux\n\na module-level attribute' module = (app.srcdir / 'generated' / 'autosummary_dummy_module.rst').read_text() assert (' .. autosummary::\n' ' \n' ' Foo\n' ' \n' in module) + assert (' .. autosummary::\n' + ' \n' + ' CONSTANT1\n' + ' qux\n' + ' \n' in module) Foo = (app.srcdir / 'generated' / 'autosummary_dummy_module.Foo.rst').read_text() assert '.. automethod:: __init__' in Foo @@ -311,6 +326,8 @@ def test_autosummary_generate(app, status, warning): ' \n' in Foo) assert (' .. autosummary::\n' ' \n' + ' ~Foo.CONSTANT3\n' + ' ~Foo.CONSTANT4\n' ' ~Foo.baz\n' ' \n' in Foo) @@ -319,6 +336,11 @@ def test_autosummary_generate(app, status, warning): '\n' '.. autoclass:: Foo.Bar\n' in FooBar) + Foo_value = (app.srcdir / 'generated' / 'autosummary_dummy_module.Foo.value.rst').read_text() + assert ('.. currentmodule:: autosummary_dummy_module\n' + '\n' + '.. autoattribute:: Foo.value' in Foo_value) + qux = (app.srcdir / 'generated' / 'autosummary_dummy_module.qux.rst').read_text() assert ('.. currentmodule:: autosummary_dummy_module\n' '\n' @@ -356,7 +378,10 @@ def test_autosummary_generate_overwrite2(app_params, make_app): @pytest.mark.sphinx('dummy', testroot='ext-autosummary-recursive') +@pytest.mark.usefixtures("rollback_sysmodules") def test_autosummary_recursive(app, status, warning): + sys.modules.pop('package', None) # unload target module to clear the module cache + app.build() # autosummary having :recursive: option @@ -380,6 +405,34 @@ def test_autosummary_recursive(app, status, warning): assert 'package.package.module' in content +@pytest.mark.sphinx('dummy', testroot='ext-autosummary-recursive', + srcdir='test_autosummary_recursive_skips_mocked_modules', + confoverrides={'autosummary_mock_imports': ['package.package']}) +@pytest.mark.usefixtures("rollback_sysmodules") +def test_autosummary_recursive_skips_mocked_modules(app, status, warning): + sys.modules.pop('package', None) # unload target module to clear the module cache + app.build() + + assert (app.srcdir / 'generated' / 'package.rst').exists() + assert (app.srcdir / 'generated' / 'package.module.rst').exists() + assert (app.srcdir / 'generated' / 'package.package.rst').exists() is False + assert (app.srcdir / 'generated' / 'package.package.module.rst').exists() is False + + +@pytest.mark.sphinx('dummy', testroot='ext-autosummary-filename-map') +def test_autosummary_filename_map(app, status, warning): + app.build() + + assert (app.srcdir / 'generated' / 'module_mangled.rst').exists() + assert not (app.srcdir / 'generated' / 'autosummary_dummy_module.rst').exists() + assert (app.srcdir / 'generated' / 'bar.rst').exists() + assert not (app.srcdir / 'generated' / 'autosummary_dummy_module.bar.rst').exists() + assert (app.srcdir / 'generated' / 'autosummary_dummy_module.Foo.rst').exists() + + html_warnings = app._warning.getvalue() + assert html_warnings == '' + + @pytest.mark.sphinx('latex', **default_kw) def test_autosummary_latex_table_colspec(app, status, warning): app.builder.build_all() |