mirror of
https://github.com/python/cpython.git
synced 2026-01-04 14:32:21 +00:00
[3.11] gh-111159: Fix SyntaxError doctests for non-builtin exception classes (GH-111541) (#111733)
gh-111159: Fix `SyntaxError` doctests for non-builtin exception classes (GH-111541)
(cherry picked from commit 18c954849b)
Co-authored-by: Nikita Sobolev <mail@sobolevn.me>
This commit is contained in:
parent
f7ffe4a8ea
commit
425efc1182
3 changed files with 24 additions and 1 deletions
|
|
@ -1376,10 +1376,14 @@ def __run(self, test, compileflags, out):
|
|||
# we don't care about the carets / suggestions / etc
|
||||
# We only care about the error message and notes.
|
||||
# They start with `SyntaxError:` (or any other class name)
|
||||
exception_line_prefixes = (
|
||||
f"{exception[0].__qualname__}:",
|
||||
f"{exception[0].__module__}.{exception[0].__qualname__}:",
|
||||
)
|
||||
exc_msg_index = next(
|
||||
index
|
||||
for index, line in enumerate(formatted_ex)
|
||||
if line.startswith(f"{exception[0].__name__}:")
|
||||
if line.startswith(exception_line_prefixes)
|
||||
)
|
||||
formatted_ex = formatted_ex[exc_msg_index:]
|
||||
|
||||
|
|
|
|||
|
|
@ -3279,6 +3279,24 @@ def test_syntax_error_with_note(cls, multiline=False):
|
|||
raise exc
|
||||
|
||||
|
||||
def test_syntax_error_subclass_from_stdlib():
|
||||
"""
|
||||
`ParseError` is a subclass of `SyntaxError`, but it is not a builtin:
|
||||
|
||||
>>> test_syntax_error_subclass_from_stdlib()
|
||||
Traceback (most recent call last):
|
||||
...
|
||||
xml.etree.ElementTree.ParseError: error
|
||||
error
|
||||
Note
|
||||
Line
|
||||
"""
|
||||
from xml.etree.ElementTree import ParseError
|
||||
exc = ParseError("error\nerror")
|
||||
exc.add_note('Note\nLine')
|
||||
raise exc
|
||||
|
||||
|
||||
def test_syntax_error_with_incorrect_expected_note():
|
||||
"""
|
||||
>>> def f(x):
|
||||
|
|
|
|||
|
|
@ -0,0 +1 @@
|
|||
Fix :mod:`doctest` for :exc:`SyntaxError` not-builtin subclasses.
|
||||
Loading…
Add table
Add a link
Reference in a new issue