summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore1
-rw-r--r--lisp/play/fortune.el68
-rw-r--r--test/lisp/play/fortune-resources/fortunes11
-rw-r--r--test/lisp/play/fortune-tests.el41
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