New submission from Clément: Line numbers reported by the doctest module are wrong when a function does not include a docstring. With the attached example file, running
python -c "import doctest, example; print(doctest.DocTestFinder(exclude_empty=False).find(example))" produces [<DocTest example from example.py:5 (no examples)>, <DocTest example.a from example.py:5 (no examples)>, <DocTest example.b from example.py:5 (no examples)>, <DocTest example.c from example.py:None (no examples)>] whereas if one uncomments the docstrings of a and c the output is [<DocTest example from example.py:1 (no examples)>, <DocTest example.a from example.py:1 (no examples)>, <DocTest example.b from example.py:5 (no examples)>, <DocTest example.c from example.py:9 (no examples)>] This bug is due to this line in doctest: lineno = self._find_lineno(obj, source_lines) The documentation of _find_lineno says this: def _find_lineno(self, obj, source_lines): """ Return a line number of the given object's docstring. Note: this method assumes that the object has a docstring. """ This assumption is violated by the call listed above, because of the exclude_empty=False parameter to DocTestFinder(). I guess lineno should just be None for all methods that do not have a docstring? ---------- components: Library (Lib) files: example.py messages: 277230 nosy: cpitclaudel priority: normal severity: normal status: open title: doctest.DocTestFinder reports incorrect line numbers with exclude_empty=False versions: Python 2.7, Python 3.5 Added file: http://bugs.python.org/file44786/example.py _______________________________________ Python tracker <rep...@bugs.python.org> <http://bugs.python.org/issue28249> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com