From d02f0221c41bf8b248d79e3aaebdec68789001da Mon Sep 17 00:00:00 2001 From: =?utf8?q?Mattias=20Engdeg=C3=A5rd?= Date: Sat, 25 Mar 2023 17:43:43 +0100 Subject: [PATCH] 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. --- test/lisp/emacs-lisp/shortdoc-tests.el | 30 ++++++++++++++++++++------ 1 file changed, 24 insertions(+), 6 deletions(-) diff --git a/test/lisp/emacs-lisp/shortdoc-tests.el b/test/lisp/emacs-lisp/shortdoc-tests.el index d2dfbc66864..596b47d2543 100644 --- a/test/lisp/emacs-lisp/shortdoc-tests.el +++ b/test/lisp/emacs-lisp/shortdoc-tests.el @@ -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) -- 2.39.2