summaryrefslogtreecommitdiff
path: root/test/src
diff options
context:
space:
mode:
authorPhilipp Stephani <phst@google.com>2017-12-23 17:56:36 +0100
committerPhilipp Stephani <phst@google.com>2017-12-30 23:16:51 +0100
commita5835dfee139322de7aa071f1c87ef015acbecad (patch)
tree992b5222049f2aa2a124f8c3484bbd074eaecfd1 /test/src
parent30ffc256abe7443a02b44490c518baf9a122b4c8 (diff)
downloademacs-a5835dfee139322de7aa071f1c87ef015acbecad.tar.gz
emacs-a5835dfee139322de7aa071f1c87ef015acbecad.tar.bz2
emacs-a5835dfee139322de7aa071f1c87ef015acbecad.zip
Improve error reporting when serializing non-Unicode strings to JSON
* src/coding.c (utf8_string_p): New helper function. (syms_of_coding) <utf-8-unix>: Move from json.c. * src/json.c (json_check_utf8): New helper function. (lisp_to_json_toplevel_1, lisp_to_json): Use it. To save a bit of time, check for invalid UTF-8 strings only after encountering an error, since Jansson already rejects them. * test/src/json-tests.el (json-serialize/invalid-unicode): Adapt expected error symbol.
Diffstat (limited to 'test/src')
-rw-r--r--test/src/json-tests.el12
1 files changed, 5 insertions, 7 deletions
diff --git a/test/src/json-tests.el b/test/src/json-tests.el
index e394583bc76..107cab89083 100644
--- a/test/src/json-tests.el
+++ b/test/src/json-tests.el
@@ -108,13 +108,11 @@
(ert-deftest json-serialize/invalid-unicode ()
(skip-unless (fboundp 'json-serialize))
- ;; FIXME: "out of memory" is the wrong error signal, but we don't
- ;; currently distinguish between error types when serializing.
- (should-error (json-serialize ["a\uDBBBb"]) :type 'json-out-of-memory)
- (should-error (json-serialize ["u\x110000v"]) :type 'json-out-of-memory)
- (should-error (json-serialize ["u\x3FFFFFv"]) :type 'json-out-of-memory)
- (should-error (json-serialize ["u\xCCv"]) :type 'json-out-of-memory)
- (should-error (json-serialize ["u\u00C4\xCCv"]) :type 'json-out-of-memory))
+ (should-error (json-serialize ["a\uDBBBb"]) :type 'wrong-type-argument)
+ (should-error (json-serialize ["u\x110000v"]) :type 'wrong-type-argument)
+ (should-error (json-serialize ["u\x3FFFFFv"]) :type 'wrong-type-argument)
+ (should-error (json-serialize ["u\xCCv"]) :type 'wrong-type-argument)
+ (should-error (json-serialize ["u\u00C4\xCCv"]) :type 'wrong-type-argument))
(ert-deftest json-parse-string/null ()
(skip-unless (fboundp 'json-parse-string))