diff options
Diffstat (limited to 'test/lisp/man-tests.el')
-rw-r--r-- | test/lisp/man-tests.el | 56 |
1 files changed, 52 insertions, 4 deletions
diff --git a/test/lisp/man-tests.el b/test/lisp/man-tests.el index 9294994892d..82714f15668 100644 --- a/test/lisp/man-tests.el +++ b/test/lisp/man-tests.el @@ -1,6 +1,6 @@ -;;; man-tests.el --- Test suite for man. +;;; man-tests.el --- Test suite for man. -*- lexical-binding:t -*- -;; Copyright (C) 2013-2017 Free Software Foundation, Inc. +;; Copyright (C) 2013-2022 Free Software Foundation, Inc. ;; Author: Wolfgang Jenkner <wjenkner@inode.at> ;; Keywords: help, internal, unix @@ -24,6 +24,7 @@ (require 'ert) (require 'man) +(require 'seq) (defconst man-tests-parse-man-k-tests '(;; GNU/Linux: man-db-2.6.1 @@ -43,7 +44,7 @@ sinl [sin] (3) - sine function" sin(3), sinf(3), sinl(3) - sine functions" . (#("sin(3)" 0 6 (help-echo "sine functions")) #("sinf(3)" 0 7 (help-echo "sine functions")) #("sinl(3)" 0 7 (help-echo "sine functions")))) ;; SunOS, Solaris - ;; http://docs.oracle.com/cd/E19455-01/805-6331/usradm-7/index.html + ;; https://docs.oracle.com/cd/E19455-01/805-6331/usradm-7/index.html ;; SunOS 4 ("\ tset, reset (1) - establish or restore terminal characteristics" @@ -60,7 +61,7 @@ cawf, nroff (1) - C version of the nroff-like, Amazingly Workable (text) Formatt whatis (5) - database of online manual pages" . (#("cawf(1)" 0 7 (help-echo "C version of the nroff-like, Amazingly Workable (text) Formatter")) #("nroff(1)" 0 8 (help-echo "C version of the nroff-like, Amazingly Workable (text) Formatter")) #("whatis(5)" 0 9 (help-echo "database of online manual pages")))) ;; HP-UX - ;; http://docstore.mik.ua/manuals/hp-ux/en/B2355-60130/man.1.html + ;; https://docstore.mik.ua/manuals/hp-ux/en/B2355-60130/man.1.html ;; Assuming that the line break in the zgrep description was ;; introduced by the man page formatting. ("\ @@ -113,6 +114,53 @@ in the cdr of the element.") (dolist (test man-tests-parse-man-k-tests) (should (man-tests-parse-man-k-test-case test)))) +(defun man-tests-filter-strings (_buffer strings) + "Run `Man-bgproc-filter' on each of STRINGS. +The formatted result will be inserted into BUFFER." + (let ((proc (start-process "dummy man-tests proc" (current-buffer) "cat"))) + (set-process-query-on-exit-flag proc nil) + (dolist (str strings) + (Man-bgproc-filter proc str)))) + +(ert-deftest man-bgproc-filter-buttonize-includes () + ;; Test with abridged version of printf man page (Bug#36927). + (let ((str "\ +PRINTF(3) Linux Programmer's Manual PRINTF(3) + +NAME + printf, fprintf, dprintf, sprintf, snprintf, vprintf, vfprintf, + +SYNOPSIS + #include <stdio.h> + + int printf(const char *format, ...); + + #include <stdarg.h> + + int vsprintf(char *str, const char *format, va_list ap); + +DESCRIPTION + The functions in the printf() family produce output according\n")) + (with-temp-buffer + (dolist (chunks + (list + ;; Test a few different kinds of chunking. + (list str) + (seq-mapcat (lambda (line) + (list line "\n")) + (split-string str "\n")) + (mapcar #'string str))) + (erase-buffer) + (man-tests-filter-strings (current-buffer) chunks) + (goto-char (point-min)) + (ert-info ((format "%S" chunks) :prefix "Input: ") + (search-forward "#include <stdio.h>") + (let ((button (button-at (match-beginning 0)))) + (should (and button (eq 'Man-xref-header-file (button-type button))))) + (search-forward "#include <stdarg.h>") + (let ((button (button-at (match-beginning 0)))) + (should (and button (eq 'Man-xref-header-file (button-type button)))))))))) + (provide 'man-tests) ;;; man-tests.el ends here |