[issue36695] Change (regression?) in v3.8.0a3 doctest output after capturing the stderr output from a raised warning
Brian Skinn
report at bugs.python.org
Mon Apr 22 09:52:59 EDT 2019
Brian Skinn <bskinn at alum.mit.edu> added the comment:
Here is warn.py, a minimal no-dependency repro script:
```
import doctest
class Tester:
r"""Provide docstring for testing.
>>> import warnings
>>> from contextlib import redirect_stderr
>>> from io import StringIO
>>> sio = StringIO()
>>> with redirect_stderr(sio):
... warnings.warn("Warning 'containing' single quotes")
>>> sio.getvalue()
"...UserWarning: Warning 'containing' single quotes\n..."
"""
doctest.run_docstring_examples(
Tester(),
{},
optionflags=doctest.ELLIPSIS,
)
```
`python3.7 warn.py` (3.7.3) gives no output.
`python3.8 warn.py` (3.8.0a3) gives:
```
$ python3.8 warn.py
****************************************************************
File "warn.py", line ?, in NoName
Failed example:
sio.getvalue()
Expected:
"...UserWarning: Warning 'containing' single quotes\n..."
Got:
'<doctest NoName[4]>:2: UserWarning: Warning \'containing\' single quotes\n warnings.warn("Warning \'containing\' single quotes")\n'
```
The problem appears to be centered around *doctest*, as the following script DOES NOT raise AssertionError with either of 3.7 or 3.8:
```
import warnings
from contextlib import redirect_stderr
from io import StringIO
sio = StringIO()
with redirect_stderr(sio):
warnings.warn("Warning 'containing' single quotes")
assert " 'containing' " in sio.getvalue()
```
----------
_______________________________________
Python tracker <report at bugs.python.org>
<https://bugs.python.org/issue36695>
_______________________________________
More information about the Python-bugs-list
mailing list