From: Mattias EngdegÄrd Date: Fri, 28 May 2021 09:43:24 +0000 (+0200) Subject: Fix shortdoc examples X-Git-Tag: emacs-28.0.90~2282 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=93162efd7901ada02995103797237beb2d49a04e;p=emacs.git Fix shortdoc examples Make sure that each example in shortdoc actually contains the function it illustrates, and add a test for it. * lisp/emacs-lisp/shortdoc.el (string, list, buffer, number): Use the right functions in examples for string-version-lessp, lax-plist-put, point-min and ffloor. * test/lisp/emacs-lisp/shortdoc-tests.el: New test file. --- diff --git a/lisp/emacs-lisp/shortdoc.el b/lisp/emacs-lisp/shortdoc.el index 652806ea280..38d8ad6cc12 100644 --- a/lisp/emacs-lisp/shortdoc.el +++ b/lisp/emacs-lisp/shortdoc.el @@ -221,7 +221,7 @@ There can be any number of :example/:result elements." (string-greaterp :eval (string-greaterp "foo" "bar")) (string-version-lessp - :eval (string-lessp "foo32.png" "bar4.png")) + :eval (string-version-lessp "pic4.png" "pic32.png")) (string-prefix-p :eval (string-prefix-p "foo" "foobar")) (string-suffix-p @@ -613,7 +613,7 @@ There can be any number of :example/:result elements." (lax-plist-get :eval (lax-plist-get '("a" 1 "b" 2 "c" 3) "b")) (lax-plist-put - :no-eval (setq plist (plist-put plist "d" 4)) + :no-eval (setq plist (lax-plist-put plist "d" 4)) :eq-result '("a" 1 "b" 2 "c" 3 "d" 4)) (plist-member :eval (plist-member '(a 1 b 2 c 3) 'b)) @@ -838,7 +838,7 @@ There can be any number of :example/:result elements." (point :eval (point)) (point-min - :eval (point-max)) + :eval (point-min)) (point-max :eval (point-max)) (line-beginning-position @@ -1056,7 +1056,7 @@ There can be any number of :example/:result elements." (logb :eval (logb 10.5)) (ffloor - :eval (floor 1.2)) + :eval (ffloor 1.2)) (fceiling :eval (fceiling 1.2)) (ftruncate diff --git a/test/lisp/emacs-lisp/shortdoc-tests.el b/test/lisp/emacs-lisp/shortdoc-tests.el new file mode 100644 index 00000000000..050aac31659 --- /dev/null +++ b/test/lisp/emacs-lisp/shortdoc-tests.el @@ -0,0 +1,45 @@ +;;; shortdoc-tests.el --- tests for shortdoc.el -*- lexical-binding: t -*- + +;; Copyright (C) 2021 Free Software Foundation, Inc. + +;; This file is part of GNU Emacs. + +;; GNU Emacs is free software: you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation, either version 3 of the License, or +;; (at your option) any later version. + +;; GNU Emacs is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with GNU Emacs. If not, see . + +(require 'ert) +(require 'shortdoc) + +(defun shortdoc-tests--tree-contains (tree fun) + "Whether TREE contains a call to FUN." + (and (proper-list-p tree) + (or (eq (car tree) fun) + (cl-some (lambda (x) (shortdoc-tests--tree-contains x fun)) tree)))) + +(ert-deftest shortdoc-examples () + "Check that each example actually contains the corresponding form." + (dolist (group shortdoc--groups) + (dolist (item group) + (when (consp item) + (let ((fun (car item)) + (props (cdr item))) + (while props + (when (memq (car props) '(:eval :no-eval :no-eval*)) + (let* ((example (cadr props)) + (expr (cond + ((consp example) example) + ((stringp example) (read example))))) + (should (shortdoc-tests--tree-contains expr fun)))) + (setq props (cddr props)))))))) + +(provide 'shortdoc-tests)