summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDoug Hellmann <doug.hellmann@gmail.com>2010-07-21 12:29:04 (GMT)
committerDoug Hellmann <doug.hellmann@gmail.com>2010-07-21 12:29:04 (GMT)
commit1c524754f67e4ba9f5e0f19e7d860d5ab2372aab (patch)
treedd00d6be393c824ba3f9da0fc0c939352b61a489
parent6dfbff3ff3773679251876284e437be4754e1452 (diff)
downloadcpython-1c524754f67e4ba9f5e0f19e7d860d5ab2372aab.zip
cpython-1c524754f67e4ba9f5e0f19e7d860d5ab2372aab.tar.gz
cpython-1c524754f67e4ba9f5e0f19e7d860d5ab2372aab.tar.bz2
Apply patch from Ray Allen for issue 9296
-rw-r--r--Lib/json/tests/test_fail.py9
-rw-r--r--Modules/_json.c2
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;
}