diff --git a/CHANGES b/CHANGES index 47fa81e6a..c709b014e 100644 --- a/CHANGES +++ b/CHANGES @@ -42,6 +42,7 @@ Bugs fixed * #6439: Make generated download links reproducible * #6486: UnboundLocalError is raised if broken extension installed * #6498: autosummary: crashed with wrong autosummary_generate setting +* #6507: autosummary: crashes without no autosummary_generate setting Testing -------- diff --git a/sphinx/ext/autosummary/__init__.py b/sphinx/ext/autosummary/__init__.py index 19c400609..de9d6dcd3 100644 --- a/sphinx/ext/autosummary/__init__.py +++ b/sphinx/ext/autosummary/__init__.py @@ -257,19 +257,26 @@ class Autosummary(SphinxDirective): docname = posixpath.join(tree_prefix, real_name) docname = posixpath.normpath(posixpath.join(dirname, docname)) if docname not in self.env.found_docs: + location = self.state_machine.get_source_and_line(self.lineno) if excluded(self.env.doc2path(docname, None)): - logger.warning(__('toctree references excluded document %r'), docname) + msg = __('autosummary references excluded document %r. Ignored.') else: - logger.warning(__('toctree references unknown document %r'), docname) + msg = __('autosummary: stub file not found %r. ' + 'Check your autosummary_generate setting.') + + logger.warning(msg, real_name, location=location) + continue + docnames.append(docname) - tocnode = addnodes.toctree() - tocnode['includefiles'] = docnames - tocnode['entries'] = [(None, docn) for docn in docnames] - tocnode['maxdepth'] = -1 - tocnode['glob'] = None + if docnames: + tocnode = addnodes.toctree() + tocnode['includefiles'] = docnames + tocnode['entries'] = [(None, docn) for docn in docnames] + tocnode['maxdepth'] = -1 + tocnode['glob'] = None - nodes.append(autosummary_toc('', '', tocnode)) + nodes.append(autosummary_toc('', '', tocnode)) return nodes diff --git a/tests/test_ext_autosummary.py b/tests/test_ext_autosummary.py index ae2b2d585..1e50ac0ac 100644 --- a/tests/test_ext_autosummary.py +++ b/tests/test_ext_autosummary.py @@ -304,7 +304,15 @@ def test_generate_autosummary_docs_property(app): ".. autoproperty:: Base.prop") +@pytest.mark.sphinx('dummy', testroot='ext-autosummary', + confoverrides={'autosummary_generate': []}) +def test_empty_autosummary_generate(app, status, warning): + app.build() + assert ("WARNING: autosummary: stub file not found 'autosummary_importfail'" + in warning.getvalue()) + + @pytest.mark.sphinx('dummy', testroot='ext-autosummary', confoverrides={'autosummary_generate': ['unknown']}) def test_invalid_autosummary_generate(app, status, warning): - assert 'WARNING: autosummary_generate: file not found: unknown.rst' in warning.getvalue() + assert 'WARNING: autosummary_generate: file not found: unknown.rst' in warning.getvalue() \ No newline at end of file