diff options
-rw-r--r-- | Lib/json/tests/test_fail.py | 9 | ||||
-rw-r--r-- | Modules/_json.c | 2 |
2 files changed, 10 insertions, 1 deletions
diff --git a/Lib/json/tests/test_fail.py b/Lib/json/tests/test_fail.py index 94e01e6..9768edf 100644 --- a/Lib/json/tests/test_fail.py +++ b/Lib/json/tests/test_fail.py @@ -74,3 +74,12 @@ class TestFail(TestCase): pass else: self.fail("Expected failure for fail{0}.json: {1!r}".format(idx, doc)) + + def test_non_string_keys_dict(self): + data = {'a' : 1, (1, 2) : 2} + + #This is for c encoder + self.assertRaises(TypeError, json.dumps, data) + + #This is for python encoder + self.assertRaises(TypeError, json.dumps, data, indent=True) diff --git a/Modules/_json.c b/Modules/_json.c index c965176..9a3708d 100644 --- a/Modules/_json.c +++ b/Modules/_json.c @@ -1454,7 +1454,7 @@ encoder_listencode_dict(PyEncoderObject *s, PyObject *rval, PyObject *dct, Py_ss } else { /* TODO: include repr of key */ - PyErr_SetString(PyExc_ValueError, "keys must be a string"); + PyErr_SetString(PyExc_TypeError, "keys must be a string"); goto bail; } |