Repository: sphinx-doc/sphinx

Issue:
autosummary crashes without no autosummary_generate setting
**Describe the bug**
autosummary is crashed if autosummary_generate is not set.

**To Reproduce**
Steps to reproduce the behavior:
```
.. autosummary::
   :toctree: generated

   example.Base
```
extensions.append('sphinx.ext.autosummary')

# autosummary_generate = []  # not configured
```
```
Traceback (most recent call last):
  File "/Users/tkomiya/work/sphinx/sphinx/cmd/build.py", line 284, in build_main
    app.build(args.force_all, filenames)
  File "/Users/tkomiya/work/sphinx/sphinx/application.py", line 345, in build
    self.builder.build_update()
  File "/Users/tkomiya/work/sphinx/sphinx/builders/__init__.py", line 298, in build_update
    len(to_build))
  File "/Users/tkomiya/work/sphinx/sphinx/builders/__init__.py", line 314, in build
    for docname in self.env.check_dependents(self.app, updated_docnames):
  File "/Users/tkomiya/work/sphinx/sphinx/environment/__init__.py", line 458, in check_dependents
    for docnames in self.events.emit('env-get-updated', self):
  File "/Users/tkomiya/work/sphinx/sphinx/events.py", line 103, in emit
    results.append(callback(self.app, *args))
  File "/Users/tkomiya/work/sphinx/sphinx/environment/collectors/toctree.py", line 140, in get_updated_docs
    return self.assign_section_numbers(env) + self.assign_figure_numbers(env)
  File "/Users/tkomiya/work/sphinx/sphinx/environment/collectors/toctree.py", line 297, in assign_figure_numbers
    _walk_doc(env.config.master_doc, tuple())
  File "/Users/tkomiya/work/sphinx/sphinx/environment/collectors/toctree.py", line 294, in _walk_doc
    _walk_doctree(docname, doctree, secnum)
  File "/Users/tkomiya/work/sphinx/sphinx/environment/collectors/toctree.py", line 274, in _walk_doctree
    _walk_doctree(docname, subnode, secnum)
  File "/Users/tkomiya/work/sphinx/sphinx/environment/collectors/toctree.py", line 287, in _walk_doctree
    _walk_doctree(docname, subnode, secnum)
  File "/Users/tkomiya/work/sphinx/sphinx/environment/collectors/toctree.py", line 281, in _walk_doctree
    _walk_doc(subdocname, secnum)
  File "/Users/tkomiya/work/sphinx/sphinx/environment/collectors/toctree.py", line 293, in _walk_doc
    doctree = env.get_doctree(docname)
  File "/Users/tkomiya/work/sphinx/sphinx/environment/__init__.py", line 538, in get_doctree
    with open(filename, 'rb') as f:
FileNotFoundError: [Errno 2] No such file or directory: '/Users/tkomiya/work/tmp/doc/_build/doctrees/generated/example.Base.doctree'
```

**Expected behavior**
Build successfully (with warning)

**Your project**
None

**Screenshots**
None

**Environment info**
- OS: Mac
- Python version: 3.7.3
- Sphinx version: 2.1.1
- Sphinx extensions: sphinx.ext.autosummary


Discussion:

Patch:
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 @@ def run(self):
                 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
 


Test patch:
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