1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2025-12-15 18:40:39 -08:00

Fix shortdoc-tests when Unicode arrows can be displayed

New shortdoc functions use Unicode arrows when possible, which caused
some tests to fail if run under such circumstances.

* test/lisp/emacs-lisp/shortdoc-tests.el
(shortdoc-tests--to-ascii): New function.
(shortdoc-function-examples-test)
(shortdoc-help-fns-examples-function-test): Call it.
This commit is contained in:
Mattias Engdegård 2023-03-25 17:43:43 +01:00
parent 52b67740d1
commit d02f0221c4

View file

@ -65,30 +65,48 @@
(when buf
(kill-buffer buf))))))
(defun shortdoc-tests--to-ascii (x)
"Translate Unicode arrows to ASCII for making the test work everywhere."
(cond ((consp x)
(cons (shortdoc-tests--to-ascii (car x))
(shortdoc-tests--to-ascii (cdr x))))
((stringp x)
(thread-last x
(string-replace "" "=>")
(string-replace "" "->")))
(t x)))
(ert-deftest shortdoc-function-examples-test ()
"Test the extraction of usage examples of some Elisp functions."
(should (equal '((list . "(delete 2 (list 1 2 3 4))\n => (1 3 4)\n (delete \"a\" (list \"a\" \"b\" \"c\" \"d\"))\n => (\"b\" \"c\" \"d\")"))
(shortdoc-function-examples 'delete)))
(shortdoc-tests--to-ascii
(shortdoc-function-examples 'delete))))
(should (equal '((alist . "(assq 'foo '((foo . bar) (zot . baz)))\n => (foo . bar)")
(list . "(assq 'b '((a . 1) (b . 2)))\n => (b . 2)"))
(shortdoc-function-examples 'assq)))
(shortdoc-tests--to-ascii
(shortdoc-function-examples 'assq))))
(should (equal '((regexp . "(string-match-p \"^[fo]+\" \"foobar\")\n => 0"))
(shortdoc-function-examples 'string-match-p))))
(shortdoc-tests--to-ascii
(shortdoc-function-examples 'string-match-p)))))
(ert-deftest shortdoc-help-fns-examples-function-test ()
"Test that `shortdoc-help-fns-examples-function' correctly prints ELisp function examples."
(with-temp-buffer
(shortdoc-help-fns-examples-function 'string-fill)
(should (equal "\n Examples:\n\n (string-fill \"Three short words\" 12)\n => \"Three short\\nwords\"\n (string-fill \"Long-word\" 3)\n => \"Long-word\"\n\n"
(buffer-substring-no-properties (point-min) (point-max))))
(shortdoc-tests--to-ascii
(buffer-substring-no-properties (point-min) (point-max)))))
(erase-buffer)
(shortdoc-help-fns-examples-function 'assq)
(should (equal "\n Examples:\n\n (assq 'foo '((foo . bar) (zot . baz)))\n => (foo . bar)\n\n (assq 'b '((a . 1) (b . 2)))\n => (b . 2)\n\n"
(buffer-substring-no-properties (point-min) (point-max))))
(shortdoc-tests--to-ascii
(buffer-substring-no-properties (point-min) (point-max)))))
(erase-buffer)
(shortdoc-help-fns-examples-function 'string-trim)
(should (equal "\n Example:\n\n (string-trim \" foo \")\n => \"foo\"\n\n"
(buffer-substring-no-properties (point-min) (point-max))))))
(shortdoc-tests--to-ascii
(buffer-substring-no-properties (point-min)
(point-max)))))))
(provide 'shortdoc-tests)