emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

master 08b1028: Use lexical-binding in fortune.el and add tests


From: Stefan Kangas
Subject: master 08b1028: Use lexical-binding in fortune.el and add tests
Date: Sat, 14 Nov 2020 09:59:34 -0500 (EST)

branch: master
commit 08b1028c1ecea9e560eb08154bfb3fc557f1275d
Author: Stefan Kangas <stefan@marxist.se>
Commit: Stefan Kangas <stefan@marxist.se>

    Use lexical-binding in fortune.el and add tests
    
    * lisp/play/fortune.el: Use lexical-binding.  Remove redundant
    :group args.
    (fortune-in-buffer): Quote function symbol as such.
    * test/lisp/play/fortune-resources/fortunes:
    * test/lisp/play/fortune-tests.el: New files.
    * .gitignore: Ignore generated file fortunes.dat.
---
 .gitignore                                |  1 +
 lisp/play/fortune.el                      | 68 +++++++++++++++----------------
 test/lisp/play/fortune-resources/fortunes | 11 +++++
 test/lisp/play/fortune-tests.el           | 41 +++++++++++++++++++
 4 files changed, 86 insertions(+), 35 deletions(-)

diff --git a/.gitignore b/.gitignore
index 29565d0..c969dca 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 f8859d9..c180fd0 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 0000000..f1ddc51
--- /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 0000000..9726340
--- /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



reply via email to

[Prev in Thread] Current Thread [Next in Thread]