]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
bpo-39200: Correct the error message for min/max builtin function (GH-17814)
authorDong-hee Na <donghee.na92@gmail.com>
Fri, 10 Jan 2020 16:31:43 +0000 (01:31 +0900)
committerVictor Stinner <vstinner@python.org>
Fri, 10 Jan 2020 16:31:43 +0000 (17:31 +0100)
Correct the error message when calling the min() or max() with
no arguments.

Lib/test/test_builtin.py
Misc/NEWS.d/next/Core and Builtins/2020-01-04-01-14-32.bpo-39200.8Z9DYp.rst [new file with mode: 0644]
Python/bltinmodule.c

index 6a88454289d3472331d8beb1e0df57cf577c4010..5c553a92b973c6ff393bd741cebaaaa5ba4c82a3 100644 (file)
@@ -949,7 +949,12 @@ class BuiltinTest(unittest.TestCase):
         self.assertEqual(max(1, 2.0, 3), 3)
         self.assertEqual(max(1.0, 2, 3), 3)
 
-        self.assertRaises(TypeError, max)
+        with self.assertRaisesRegex(
+            TypeError,
+            'max expected at least 1 argument, got 0'
+        ):
+            max()
+
         self.assertRaises(TypeError, max, 42)
         self.assertRaises(ValueError, max, ())
         class BadSeq:
@@ -1003,7 +1008,12 @@ class BuiltinTest(unittest.TestCase):
         self.assertEqual(min(1, 2.0, 3), 1)
         self.assertEqual(min(1.0, 2, 3), 1.0)
 
-        self.assertRaises(TypeError, min)
+        with self.assertRaisesRegex(
+            TypeError,
+            'min expected at least 1 argument, got 0'
+        ):
+            min()
+
         self.assertRaises(TypeError, min, 42)
         self.assertRaises(ValueError, min, ())
         class BadSeq:
diff --git a/Misc/NEWS.d/next/Core and Builtins/2020-01-04-01-14-32.bpo-39200.8Z9DYp.rst b/Misc/NEWS.d/next/Core and Builtins/2020-01-04-01-14-32.bpo-39200.8Z9DYp.rst
new file mode 100644 (file)
index 0000000..71e4072
--- /dev/null
@@ -0,0 +1,2 @@
+Correct the error message when calling the :func:`min` or :func:`max` with
+no arguments. Patch by Dong-hee Na.
index 34267685be2f1fbf5f34ee3f814e82357c115f23..4f833c1f462533055ab6c203ab1ff6a8568a2879 100644 (file)
@@ -1589,10 +1589,15 @@ min_max(PyObject *args, PyObject *kwds, int op)
     const int positional = PyTuple_Size(args) > 1;
     int ret;
 
-    if (positional)
+    if (positional) {
         v = args;
-    else if (!PyArg_UnpackTuple(args, name, 1, 1, &v))
+    }
+    else if (!PyArg_UnpackTuple(args, name, 1, 1, &v)) {
+        if (PyExceptionClass_Check(PyExc_TypeError)) {
+            PyErr_Format(PyExc_TypeError, "%s expected at least 1 argument, got 0", name);
+        }
         return NULL;
+    }
 
     emptytuple = PyTuple_New(0);
     if (emptytuple == NULL)