mirror of https://github.com/python/cpython
bpo-35178: Fix warnings._formatwarnmsg() (GH-12033)
Ensure custom formatwarning function can receive line as positional argument. Co-Authored-By: Tashrif Billah <tashrifbillah@gmail.com>
This commit is contained in:
parent
91b9ecf82c
commit
be7c460fb5
|
@ -877,6 +877,25 @@ class WarningsDisplayTests(BaseTest):
|
|||
file_object, expected_file_line)
|
||||
self.assertEqual(expect, file_object.getvalue())
|
||||
|
||||
def test_formatwarning_override(self):
|
||||
# bpo-35178: Test that a custom formatwarning function gets the 'line'
|
||||
# argument as a positional argument, and not only as a keyword argument
|
||||
def myformatwarning(message, category, filename, lineno, text):
|
||||
return f'm={message}:c={category}:f={filename}:l={lineno}:t={text}'
|
||||
|
||||
file_name = os.path.splitext(warning_tests.__file__)[0] + '.py'
|
||||
line_num = 3
|
||||
file_line = linecache.getline(file_name, line_num).strip()
|
||||
message = 'msg'
|
||||
category = Warning
|
||||
file_object = StringIO()
|
||||
expected = f'm={message}:c={category}:f={file_name}:l={line_num}' + \
|
||||
f':t={file_line}'
|
||||
with support.swap_attr(self.module, 'formatwarning', myformatwarning):
|
||||
self.module.showwarning(message, category, file_name, line_num,
|
||||
file_object, file_line)
|
||||
self.assertEqual(file_object.getvalue(), expected)
|
||||
|
||||
|
||||
class CWarningsDisplayTests(WarningsDisplayTests, unittest.TestCase):
|
||||
module = c_warnings
|
||||
|
|
|
@ -124,7 +124,7 @@ def _formatwarnmsg(msg):
|
|||
if fw is not _formatwarning_orig:
|
||||
# warnings.formatwarning() was replaced
|
||||
return fw(msg.message, msg.category,
|
||||
msg.filename, msg.lineno, line=msg.line)
|
||||
msg.filename, msg.lineno, msg.line)
|
||||
return _formatwarnmsg_impl(msg)
|
||||
|
||||
def filterwarnings(action, message="", category=Warning, module="", lineno=0,
|
||||
|
|
|
@ -0,0 +1,2 @@
|
|||
Ensure custom :func:`warnings.formatwarning` function can receive `line` as
|
||||
positional argument. Based on patch by Tashrif Billah.
|
Loading…
Reference in New Issue