From f9f1ccace395a8f65b60dc12567a237b4002fd18 Mon Sep 17 00:00:00 2001 From: Serhiy Storchaka Date: Fri, 9 Jun 2017 19:27:06 +0300 Subject: Fix regression in error message introduced in bpo-29951. (#2028) * Fix regression in error message introduced in bpo-29951. * Add test. * Make the test more strong. --- Lib/test/test_call.py | 4 ++++ Python/getargs.c | 4 ++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/Lib/test/test_call.py b/Lib/test/test_call.py index d929cfc..1e84b52 100644 --- a/Lib/test/test_call.py +++ b/Lib/test/test_call.py @@ -136,6 +136,10 @@ class CFunctionCallsErrorMessages(unittest.TestCase): msg = r"__contains__\(\) takes exactly one argument \(2 given\)" self.assertRaisesRegex(TypeError, msg, {}.__contains__, 0, 1) + def test_varargs3(self): + msg = r"^from_bytes\(\) takes at most 2 positional arguments \(3 given\)" + self.assertRaisesRegex(TypeError, msg, int.from_bytes, b'a', 'little', False) + def test_varargs1_kw(self): msg = r"__contains__\(\) takes no keyword arguments" self.assertRaisesRegex(TypeError, msg, {}.__contains__, x=2) diff --git a/Python/getargs.c b/Python/getargs.c index af1f2a2..f555870 100644 --- a/Python/getargs.c +++ b/Python/getargs.c @@ -2089,13 +2089,13 @@ vgetargskeywordsfast_impl(PyObject **args, Py_ssize_t nargs, if (parser->max < nargs) { if (parser->max == 0) { PyErr_Format(PyExc_TypeError, - "%200s%s takes no positional arguments", + "%.200s%s takes no positional arguments", (parser->fname == NULL) ? "function" : parser->fname, (parser->fname == NULL) ? "" : "()"); } else { PyErr_Format(PyExc_TypeError, - "%200s%s takes %s %d positional arguments (%d given)", + "%.200s%s takes %s %d positional arguments (%d given)", (parser->fname == NULL) ? "function" : parser->fname, (parser->fname == NULL) ? "" : "()", (parser->min != INT_MAX) ? "at most" : "exactly", -- cgit v0.12