From 3455192777459a08a38b0adb311a76202e29f48d Mon Sep 17 00:00:00 2001 From: Philipp Stephani Date: Tue, 19 Dec 2017 00:04:29 +0100 Subject: JSON serialization: reject duplicate keys in hashtables * src/json.c (lisp_to_json_toplevel_1): Reject duplicate keys in hashtables. * test/src/json-tests.el (json-serialize/object-with-duplicate-keys): Add unit tests. --- test/src/json-tests.el | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'test/src/json-tests.el') diff --git a/test/src/json-tests.el b/test/src/json-tests.el index 9884e9a2d57..5d9f6b3840c 100644 --- a/test/src/json-tests.el +++ b/test/src/json-tests.el @@ -52,6 +52,14 @@ (should (equal (json-serialize table) "{\"abc\":[1,2,true],\"def\":null}")))) +(ert-deftest json-serialize/object-with-duplicate-keys () + (skip-unless (fboundp 'json-serialize)) + (let ((table (make-hash-table :test #'eq))) + (puthash (copy-sequence "abc") [1 2 t] table) + (puthash (copy-sequence "abc") :null table) + (should (equal (hash-table-count table) 2)) + (should-error (json-serialize table) :type 'wrong-type-argument))) + (ert-deftest json-parse-string/object () (skip-unless (fboundp 'json-parse-string)) (let ((input -- cgit v1.2.1