diff --git a/Lib/test/test_traceback.py b/Lib/test/test_traceback.py index ac492782cb1..6ae8cf5c9a5 100644 --- a/Lib/test/test_traceback.py +++ b/Lib/test/test_traceback.py @@ -4619,7 +4619,31 @@ class MiscTest(unittest.TestCase): @cpython_only def test_suggestions_extension(self): # Check that the C extension is available - import _suggestions # noqa: F401 + import _suggestions + + self.assertEqual( + _suggestions._generate_suggestions( + ["hello", "world"], + "hell" + ), + "hello" + ) + self.assertEqual( + _suggestions._generate_suggestions( + ["hovercraft"], + "eels" + ), + None + ) + + # gh-131936: _generate_suggestions() doesn't accept list subclasses + class MyList(list): + pass + + with self.assertRaises(TypeError): + _suggestions._generate_suggestions(MyList(), "") + + class TestColorizedTraceback(unittest.TestCase): diff --git a/Modules/_suggestions.c b/Modules/_suggestions.c index 80c7179c4c2..b8bc6db2477 100644 --- a/Modules/_suggestions.c +++ b/Modules/_suggestions.c @@ -21,7 +21,7 @@ _suggestions__generate_suggestions_impl(PyObject *module, /*[clinic end generated code: output=79be7b653ae5e7ca input=ba2a8dddc654e33a]*/ { // Check if dir is a list - if (!PyList_Check(candidates)) { + if (!PyList_CheckExact(candidates)) { PyErr_SetString(PyExc_TypeError, "candidates must be a list"); return NULL; }