diff options
-rw-r--r-- | .gitignore | 1 | ||||
-rw-r--r-- | lisp/play/fortune.el | 68 | ||||
-rw-r--r-- | test/lisp/play/fortune-resources/fortunes | 11 | ||||
-rw-r--r-- | test/lisp/play/fortune-tests.el | 41 |
4 files changed, 86 insertions, 35 deletions
diff --git a/.gitignore b/.gitignore index 29565d0417b..c969dcadf96 100644 --- a/.gitignore +++ b/.gitignore @@ -153,6 +153,7 @@ test/manual/etags/ETAGS test/manual/etags/CTAGS test/manual/indent/*.new test/lisp/gnus/mml-sec-resources/random_seed +test/lisp/play/fortune-resources/fortunes.dat # ctags, etags. TAGS diff --git a/lisp/play/fortune.el b/lisp/play/fortune.el index f8859d954f8..c180fd06c34 100644 --- a/lisp/play/fortune.el +++ b/lisp/play/fortune.el @@ -1,4 +1,4 @@ -;;; fortune.el --- use fortune to create signatures +;;; fortune.el --- use fortune to create signatures -*- lexical-binding: t -*- ;; Copyright (C) 1999, 2001-2020 Free Software Foundation, Inc. @@ -63,76 +63,75 @@ :link '(emacs-commentary-link "fortune.el") :version "21.1" :group 'games) -(defgroup fortune-signature nil - "Settings for use of fortune for signatures." - :group 'fortune - :group 'mail) (defcustom fortune-dir "~/docs/ascii/misc/fortunes/" "The directory to look in for local fortune cookies files." - :type 'directory - :group 'fortune) + :type 'directory) + (defcustom fortune-file (expand-file-name "usenet" fortune-dir) "The file in which local fortune cookies will be stored." - :type 'file - :group 'fortune) + :type 'file) + (defcustom fortune-database-extension ".dat" "The extension of the corresponding fortune database. Normally you won't have a reason to change it." - :type 'string - :group 'fortune) + :type 'string) + (defcustom fortune-program "fortune" "Program to select a fortune cookie." - :type 'string - :group 'fortune) + :type 'string) + (defcustom fortune-program-options () "List of options to pass to the fortune program." :type '(choice (repeat (string :tag "Option")) (string :tag "Obsolete string of options")) - :version "23.1" - :group 'fortune) + :version "23.1") + (defcustom fortune-strfile "strfile" "Program to compute a new fortune database." - :type 'string - :group 'fortune) + :type 'string) + (defcustom fortune-strfile-options "" "Options to pass to the strfile program (a string)." - :type 'string - :group 'fortune) + :type 'string) + (defcustom fortune-quiet-strfile-options "> /dev/null" "Text added to the command for running `strfile'. By default it discards the output produced by `strfile'. Set this to \"\" if you would like to see the output." - :type 'string - :group 'fortune) + :type 'string) (defcustom fortune-always-compile t "Non-nil means automatically compile fortune files. If nil, you must invoke `fortune-compile' manually to do that." - :type 'boolean - :group 'fortune) + :type 'boolean) + +(defgroup fortune-signature nil + "Settings for use of fortune for signatures." + :group 'fortune + :group 'mail) + (defcustom fortune-author-line-prefix " -- " "Prefix to put before the author name of a fortunate." - :type 'string - :group 'fortune-signature) + :type 'string) + (defcustom fortune-fill-column fill-column "Fill column for fortune files." - :type 'integer - :group 'fortune-signature) + :type 'integer) + (defcustom fortune-from-mail "private e-mail" "String to use to characterize that the fortune comes from an e-mail. No need to add an `in'." - :type 'string - :group 'fortune-signature) + :type 'string) + (defcustom fortune-sigstart "" "Some text to insert before the fortune cookie, in a mail signature." - :type 'string - :group 'fortune-signature) + :type 'string) + (defcustom fortune-sigend "" "Some text to insert after the fortune cookie, in a mail signature." - :type 'string - :group 'fortune-signature) + :type 'string) ;; not customizable settings @@ -297,7 +296,7 @@ specifies the file to choose the fortune from." (erase-buffer) (if fortune-always-compile (fortune-compile fort-file)) - (apply 'call-process + (apply #'call-process fortune-program ; program to call nil fortune-buffer nil ; INFILE BUFFER DISPLAY (append (if (stringp fortune-program-options) @@ -334,7 +333,6 @@ and choose the directory as the fortune-file." (setq buffer-read-only t)) -;;; Provide ourselves. (provide 'fortune) ;;; fortune.el ends here diff --git a/test/lisp/play/fortune-resources/fortunes b/test/lisp/play/fortune-resources/fortunes new file mode 100644 index 00000000000..f1ddc512d00 --- /dev/null +++ b/test/lisp/play/fortune-resources/fortunes @@ -0,0 +1,11 @@ +Embarrassed +Manual-Writer +Accused of +Communist +Subversion +% +Embarrassingly +Mundane +Advertising +Cuts +Sales diff --git a/test/lisp/play/fortune-tests.el b/test/lisp/play/fortune-tests.el new file mode 100644 index 00000000000..97263405e8a --- /dev/null +++ b/test/lisp/play/fortune-tests.el @@ -0,0 +1,41 @@ +;;; fortune-tests.el --- Tests for fortune.el -*- lexical-binding: t -*- + +;; Copyright (C) 2020 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 <https://www.gnu.org/licenses/>. + +;;; Commentary: + +;;; Code: + +(require 'ert) +(require 'ert-x) +(require 'fortune) + +(defvar fortune-tests--regexp + (rx (| "Embarrassed" "Embarrassingly"))) + +(ert-deftest test-fortune () + (skip-unless (executable-find "fortune")) + (unwind-protect + (let ((fortune-file (ert-resource-file "fortunes"))) + (fortune) + (goto-char (point-min)) + (should (looking-at fortune-tests--regexp))) + (kill-buffer fortune-buffer-name))) + +(provide 'fortune-tests) +;;; fortune-tests.el ends here |