summaryrefslogtreecommitdiff
path: root/test/src/json-tests.el
diff options
context:
space:
mode:
authorPhilipp Stephani <phst@google.com>2017-12-19 00:04:29 +0100
committerPhilipp Stephani <phst@google.com>2017-12-24 13:52:30 +0100
commit3455192777459a08a38b0adb311a76202e29f48d (patch)
treeaa20b6d6b54940814ee6dd2775b2b440333385ce /test/src/json-tests.el
parentc7a50740273a338285abe7c9bb24a1f45928e02a (diff)
downloademacs-3455192777459a08a38b0adb311a76202e29f48d.tar.gz
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.
Diffstat (limited to 'test/src/json-tests.el')
-rw-r--r--test/src/json-tests.el8
1 files changed, 8 insertions, 0 deletions
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