From: Mattias Engdegård Date: Sun, 31 Mar 2024 13:07:34 +0000 (+0200) Subject: Native JSON support is always available X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=beb200a0e2e9e72eea741b8a11b2663424b88c68;p=emacs.git Native JSON support is always available * lisp/progmodes/sh-script.el (sh--json-read): Remove. (sh-shellcheck-flymake): Call json-parse-buffer directly. * test/src/json-tests.el: Don't check for function availability. (cherry picked from commit f178a6d8006f1e8afe06bb71d0a413622d73f131) --- diff --git a/lisp/progmodes/sh-script.el b/lisp/progmodes/sh-script.el index ab95dc9f924..20c9e00edbf 100644 --- a/lisp/progmodes/sh-script.el +++ b/lisp/progmodes/sh-script.el @@ -3194,12 +3194,6 @@ shell command and conveniently use this command." (defvar-local sh--shellcheck-process nil) -(defalias 'sh--json-read - (if (fboundp 'json-parse-buffer) - (lambda () (json-parse-buffer :object-type 'alist)) - (require 'json) - 'json-read)) - (defun sh-shellcheck-flymake (report-fn &rest _args) "Flymake backend using the shellcheck program. Takes a Flymake callback REPORT-FN as argument, as expected of a @@ -3223,7 +3217,7 @@ member of `flymake-diagnostic-functions'." (with-current-buffer (process-buffer proc) (goto-char (point-min)) (thread-last - (sh--json-read) + (json-parse-buffer :object-type 'alist) (alist-get 'comments) (seq-filter (lambda (item) diff --git a/test/src/json-tests.el b/test/src/json-tests.el index e5cbe8bff5c..fb2384d4a8d 100644 --- a/test/src/json-tests.el +++ b/test/src/json-tests.el @@ -34,7 +34,6 @@ (define-error 'json-tests--error "JSON test error") (ert-deftest json-serialize/roundtrip () - (skip-unless (fboundp 'json-serialize)) ;; The noncharacter U+FFFF should be passed through, ;; cf. https://www.unicode.org/faq/private_use.html#noncharacters. (let ((lisp [:null :false t 0 123 -456 3.75 "abc\uFFFFαβγ𝔸𝐁𝖢\"\\"]) @@ -53,7 +52,6 @@ (ert-deftest json-serialize/roundtrip-scalars () "Check that Bug#42994 is fixed." - (skip-unless (fboundp 'json-serialize)) (dolist (case '((:null "null") (:false "false") (t "true") @@ -80,7 +78,6 @@ (should (eobp))))))) (ert-deftest json-serialize/object () - (skip-unless (fboundp 'json-serialize)) (let ((table (make-hash-table :test #'equal))) (puthash "abc" [1 2 t] table) (puthash "def" :null table) @@ -125,8 +122,6 @@ }"))) (ert-deftest json-serialize/object-with-duplicate-keys () - (skip-unless (fboundp 'json-serialize)) - (dolist (n '(1 5 20 100)) (let ((symbols (mapcar (lambda (i) (make-symbol (format "s%d" i))) (number-sequence 1 n))) @@ -160,7 +155,6 @@ ) (ert-deftest json-parse-string/object () - (skip-unless (fboundp 'json-parse-string)) (let ((input "{ \"abc\" : [1, 2, true], \"def\" : null, \"abc\" : [9, false] }\n")) (let ((actual (json-parse-string input))) @@ -174,7 +168,6 @@ '(:abc [9 :false] :def :null))))) (ert-deftest json-parse-string/array () - (skip-unless (fboundp 'json-parse-string)) (let ((input "[\"a\", 1, [\"b\", 2]]")) (should (equal (json-parse-string input) ["a" 1 ["b" 2]])) @@ -182,7 +175,6 @@ '("a" 1 ("b" 2)))))) (ert-deftest json-parse-string/string () - (skip-unless (fboundp 'json-parse-string)) (should-error (json-parse-string "[\"formfeed\f\"]") :type 'json-parse-error) (should (equal (json-parse-string "[\"foo \\\"bar\\\"\"]") ["foo \"bar\""])) (should (equal (json-parse-string "[\"abcαβγ\"]") ["abcαβγ"])) @@ -194,7 +186,6 @@ (should (equal (json-parse-string "[\"\u00C4\xC3\x84\"]") ["\u00C4\u00C4"]))) (ert-deftest json-serialize/string () - (skip-unless (fboundp 'json-serialize)) (should (equal (json-serialize ["foo"]) "[\"foo\"]")) (should (equal (json-serialize ["a\n\fb"]) "[\"a\\n\\fb\"]")) (should (equal (json-serialize ["\nasdфыв\u001f\u007ffgh\t"]) @@ -204,7 +195,6 @@ (should-error (json-serialize ["\u00C4\xC3\x84"]))) (ert-deftest json-serialize/invalid-unicode () - (skip-unless (fboundp 'json-serialize)) (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) @@ -212,7 +202,6 @@ (should-error (json-serialize ["u\u00C4\xCCv"]) :type 'wrong-type-argument)) (ert-deftest json-parse-string/null () - (skip-unless (fboundp 'json-parse-string)) (should-error (json-parse-string "\x00") :type 'wrong-type-argument) (should (json-parse-string "[\"a\\u0000b\"]")) (let* ((string "{\"foo\":\"this is a string including a literal \\u0000\"}") @@ -224,7 +213,6 @@ "Some examples from https://www.cl.cam.ac.uk/~mgk25/ucs/examples/UTF-8-test.txt. Test with both unibyte and multibyte strings." - (skip-unless (fboundp 'json-parse-string)) ;; Invalid UTF-8 code unit sequences. (should-error (json-parse-string "[\"\x80\"]") :type 'json-parse-error) (should-error (json-parse-string "[\"\u00C4\x80\"]") :type 'json-parse-error) @@ -252,15 +240,12 @@ Test with both unibyte and multibyte strings." :type 'json-parse-error)) (ert-deftest json-parse-string/incomplete () - (skip-unless (fboundp 'json-parse-string)) (should-error (json-parse-string "[123") :type 'json-end-of-file)) (ert-deftest json-parse-string/trailing () - (skip-unless (fboundp 'json-parse-string)) (should-error (json-parse-string "[123] [456]") :type 'json-trailing-content)) (ert-deftest json-parse-buffer/incomplete () - (skip-unless (fboundp 'json-parse-buffer)) (with-temp-buffer (insert "[123") (goto-char 1) @@ -268,7 +253,6 @@ Test with both unibyte and multibyte strings." (should (bobp)))) (ert-deftest json-parse-buffer/trailing () - (skip-unless (fboundp 'json-parse-buffer)) (with-temp-buffer (insert "[123] [456]") (goto-char 1) @@ -277,8 +261,6 @@ Test with both unibyte and multibyte strings." (should (looking-at-p (rx " [456]" eos))))) (ert-deftest json-parse-with-custom-null-and-false-objects () - (skip-unless (and (fboundp 'json-serialize) - (fboundp 'json-parse-string))) (let* ((input "{ \"abc\" : [9, false] , \"def\" : null }") (output @@ -316,7 +298,6 @@ Test with both unibyte and multibyte strings." (should-error (json-serialize '() :object-type 'alist)))) (ert-deftest json-insert/signal () - (skip-unless (fboundp 'json-insert)) (with-temp-buffer (let ((calls 0)) (add-hook 'after-change-functions @@ -331,7 +312,6 @@ Test with both unibyte and multibyte strings." (should (equal calls 1))))) (ert-deftest json-insert/throw () - (skip-unless (fboundp 'json-insert)) (with-temp-buffer (let ((calls 0)) (add-hook 'after-change-functions @@ -347,7 +327,6 @@ Test with both unibyte and multibyte strings." (should (equal calls 1))))) (ert-deftest json-serialize/bignum () - (skip-unless (fboundp 'json-serialize)) (should (equal (json-serialize (vector (1+ most-positive-fixnum) (1- most-negative-fixnum))) (format "[%d,%d]" @@ -356,12 +335,10 @@ Test with both unibyte and multibyte strings." (ert-deftest json-parse-string/wrong-type () "Check that Bug#42113 is fixed." - (skip-unless (fboundp 'json-parse-string)) (should-error (json-parse-string 1) :type 'wrong-type-argument)) (ert-deftest json-serialize/wrong-hash-key-type () "Check that Bug#42113 is fixed." - (skip-unless (fboundp 'json-serialize)) (let ((table (make-hash-table :test #'eq))) (puthash 1 2 table) (should-error (json-serialize table) :type 'wrong-type-argument)))