Make ‘mailcap-viewer-passes-test’ return t for viewers without tests
authorFelix Dietrich <felix.dietrich@sperrhaken.name>
Sun, 6 Aug 2023 04:01:24 +0000 (06:01 +0200)
committerStefan Kangas <stefankangas@gmail.com>
Sun, 10 Sep 2023 06:16:22 +0000 (08:16 +0200)
* lisp/net/mailcap.el (mailcap-viewer-passes-test):
Make ‘mailcap-viewer-passes-test’ follow its docstring and return t
for viewers without a test.  (Bug#65224)
* test/lisp/net/mailcap-tests.el
(mailcap-viewer-passes-test-w/o-test-returns-t): New test.

lisp/net/mailcap.el
test/lisp/net/mailcap-tests.el

index 4d01737e3e6b5416e5c6a3d01f160dce6116fe71..81cc51f1bf03e3080a96c4d50c06ae641e3ef91a 100644 (file)
@@ -689,9 +689,9 @@ to supply to the test."
         status cache result)
     (cond ((not (or (stringp viewer) (fboundp viewer)))
           nil)                         ; Non-existent Lisp function
+         ((null test-info) t)          ; No test clause
          ((setq cache (assoc test mailcap-viewer-test-cache))
           (cadr cache))
-         ((not test-info) t)           ; No test clause
          (t
           (setq
            result
index e47ead98f421bbb189a1877e5b5d07455083a920..175c3e88da95c90e1c7abf01fa28f18ac0c458a3 100644 (file)
@@ -537,5 +537,29 @@ help to verify the correct addition and merging of an entry."
                           ("minor" . ((viewer . "viewer")
                                       (edit . "edit")))))))))
 
+\f
+
+(ert-deftest mailcap-viewer-passes-test-w/o-test-returns-t ()
+  "A VIEWER-INFO without a test should return t with a valid viewer (Bug#65224)."
+
+  (should (equal t
+                 (let ((mailcap-viewer-test-cache)
+                       (viewer-info
+                        (list (cons 'viewer "viewer-w/o-test"))))
+                   (mailcap-viewer-passes-test viewer-info nil))))
+
+  (should (equal '(t t nil t)
+                 (let ((mailcap-viewer-test-cache)
+                       (viewer-infos
+                        (list
+                         (list (cons 'viewer "viewer-w/o-test"))
+                         (list (cons 'viewer "viewer-w/o-test"))
+                         (list (cons 'viewer "viewer-w/nil-test")
+                               (cons 'test    nil))
+                         (list (cons 'viewer "viewer-w/o-test"))
+                         )))
+                   (mapcar (lambda (vi)
+                             (mailcap-viewer-passes-test vi nil))
+                           viewer-infos)))))
 
 ;;; mailcap-tests.el ends here