aboutsummaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
authorGemini Lasswell2018-05-27 11:38:00 -0700
committerGemini Lasswell2018-06-04 08:57:10 -0700
commit5d448ca98cd59287b2c20175e2e6638f1922db57 (patch)
treec7db77439fede92045ab369392acd046d6824b96 /test
parent03697e648c080f6b007b6ef8443fd4448bc52364 (diff)
downloademacs-5d448ca98cd59287b2c20175e2e6638f1922db57.tar.gz
emacs-5d448ca98cd59287b2c20175e2e6638f1922db57.zip
Make cl-print respect print-level and print-length (bug#31559)
* lisp/emacs-lisp/cl-print.el (cl-print--depth): New variable. (cl-print-object) <cons>: Print ellipsis if printing depth greater than 'print-level' or length of list greater than 'print-length'. (cl-print-object) <vector>: Truncate printing with ellipsis if vector is longer than 'print-length'. (cl-print-object) <cl-structure-object>: Truncate printing with ellipsis if structure has more slots than 'print-length'. (cl-print-object) <:around>: Bind 'cl-print--depth'. * test/lisp/emacs-lisp/cl-print-tests.el (cl-print-tests-3, cl-print-tests-4): New tests. (cherry picked from commit 0f48d18fd2a30f29cc3592a835d2a2254c9b0afb)
Diffstat (limited to 'test')
-rw-r--r--test/lisp/emacs-lisp/cl-print-tests.el25
1 files changed, 25 insertions, 0 deletions
diff --git a/test/lisp/emacs-lisp/cl-print-tests.el b/test/lisp/emacs-lisp/cl-print-tests.el
index d986c4015d7..bfce4a16cec 100644
--- a/test/lisp/emacs-lisp/cl-print-tests.el
+++ b/test/lisp/emacs-lisp/cl-print-tests.el
@@ -47,6 +47,31 @@
47 "\\`(#1=#s(foo 1 2 3) #1#)\\'" 47 "\\`(#1=#s(foo 1 2 3) #1#)\\'"
48 (cl-prin1-to-string (list x x))))))) 48 (cl-prin1-to-string (list x x)))))))
49 49
50(cl-defstruct (cl-print-tests-struct
51 (:constructor cl-print-tests-con))
52 a b c d e)
53
54(ert-deftest cl-print-tests-3 ()
55 "CL printing observes `print-length'."
56 (let ((long-list (make-list 5 'a))
57 (long-vec (make-vector 5 'b))
58 (long-struct (cl-print-tests-con))
59 (print-length 4))
60 (should (equal "(a a a a ...)" (cl-prin1-to-string long-list)))
61 (should (equal "[b b b b ...]" (cl-prin1-to-string long-vec)))
62 (should (equal "#s(cl-print-tests-struct :a nil :b nil :c nil :d nil ...)"
63 (cl-prin1-to-string long-struct)))))
64
65(ert-deftest cl-print-tests-4 ()
66 "CL printing observes `print-level'."
67 (let ((deep-list '(a (b (c (d (e))))))
68 (deep-struct (cl-print-tests-con))
69 (print-level 4))
70 (setf (cl-print-tests-struct-a deep-struct) deep-list)
71 (should (equal "(a (b (c (d ...))))" (cl-prin1-to-string deep-list)))
72 (should (equal "#s(cl-print-tests-struct :a (a (b (c ...))) :b nil :c nil :d nil :e nil)"
73 (cl-prin1-to-string deep-struct)))))
74
50(ert-deftest cl-print-circle () 75(ert-deftest cl-print-circle ()
51 (let ((x '(#1=(a . #1#) #1#))) 76 (let ((x '(#1=(a . #1#) #1#)))
52 (let ((print-circle nil)) 77 (let ((print-circle nil))