blob: c7851536a45b17f6028cbfebede5b0225f87d564 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
|
;;; gentoo-newsitem-mode-tests.el -*-lexical-binding:t-*-
;; Copyright 2024 Gentoo Authors
;; Author: Ulrich Müller <ulm@gentoo.org>
;; Maintainer: <emacs@gentoo.org>
;; This file 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 2 of the License, or
;; (at your option) any later version.
;; This file 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 <http://www.gnu.org/licenses/>.
;;; Code:
(require 'ert)
(require 'gentoo-newsitem-mode)
(unless (fboundp 'cl-letf)
(defalias 'cl-letf #'letf)
(defalias 'cl-letf* #'letf*))
(defmacro gentoo-newsitem-mode-test-run-silently (&rest body)
(if (boundp 'inhibit-message)
`(let ((inhibit-message t)) ,@body)
`(cl-letf (((symbol-function 'append-message) #'ignore)
((symbol-function 'clear-message) #'ignore))
,@body)))
(defvar gentoo-newsitem-mode-test-input nil)
(defun gentoo-newsitem-mode-test-input (&rest _args)
(concat (pop gentoo-newsitem-mode-test-input)))
(ert-deftest gentoo-newsitem-mode-test-font-lock ()
(with-temp-buffer
(gentoo-newsitem-mode)
(insert "Author: Larry the Cow\n")
(if (fboundp 'font-lock-ensure)
(font-lock-ensure)
;; XEmacs refuses to fontify in batch mode,
;; therefore pretend that we are interactive
(cl-letf (((symbol-function 'noninteractive) #'ignore))
(gentoo-newsitem-mode-test-run-silently
(font-lock-fontify-buffer))))
(goto-char (point-min))
(search-forward "Author")
(should (equal (get-text-property (match-beginning 0) 'face)
'font-lock-keyword-face))
(search-forward "Larry")
(should-not (get-text-property (match-beginning 0) 'face))))
(ert-deftest gentoo-newsitem-mode-test-skeleton ()
(with-temp-buffer
(cl-letf (((symbol-function 'read-from-minibuffer)
#'gentoo-newsitem-mode-test-input)
((symbol-function 'read-string)
#'gentoo-newsitem-mode-test-input))
(setq gentoo-newsitem-mode-test-input
'("Skeleton test" ; Title
"Larry the Cow <larry@example.org>" "" ; Author
"" ; Translator
"2024-08-10" ; Posted
"" ; News-Item-Format
"" ; Display-If-Installed
"" ; Display-If-Keyword
"")) ; Display-If-Profile
(if (featurep 'xemacs)
;; prevent a segfault (seen with XEmacs 21.4.24 and 21.5.35)
(cl-letf (((symbol-function 'pos-visible-in-window-p)
(lambda (&rest _args) t)))
(gentoo-newsitem-insert-skeleton))
(gentoo-newsitem-insert-skeleton))
(should (string-equal
(buffer-string)
(concat "Title: Skeleton test\n"
"Author: Larry the Cow <larry@example.org>\n"
"Posted: 2024-08-10\n"
"Revision: 1\n"
"News-Item-Format: 2.0\n\n"))))))
(ert-deftest gentoo-newsitem-mode-test-keybindings ()
(should (equal (lookup-key gentoo-newsitem-mode-map "\C-c\C-n")
'gentoo-newsitem-insert-skeleton))
(with-temp-buffer
(gentoo-newsitem-mode)
(should (equal (local-key-binding "\C-c\C-n")
'gentoo-newsitem-insert-skeleton))))
(provide 'gentoo-newsitem-mode-tests)
;; Local Variables:
;; coding: utf-8
;; End:
;;; gentoo-newsitem-mode-tests.el ends here
|