mirror of
git://git.sv.gnu.org/emacs.git
synced 2025-12-20 12:40:56 -08:00
Simplify fill-tests.el by grouping similar tests in the same erts file. Move the test code into the erts files, so it is closer to the test cases, which provides context. Add basic test cases for common filling operations and for the scenarios described in Bug#79575. * test/lisp/textmodes/fill-tests.el (fill-test-end-period) (fill-test-haskell): Rename from `test-fill-end-period' and `test-fill-haskell' to follow the same naming convention of the other tests. (fill-test-fill-region-as-paragraph-default) (fill-test-fill-region-as-paragraph-semlf) (fill-test-fill-region-as-paragraph, fill-test-fill-region) (fill-test-fill-paragraph, fill-test-fill-paragraph-semlf): Group tests and move test code into erts files. (fill-test-fill-paragraph-semlf-emacs-lisp-mode) (fill-test-fill-paragraph-semlf-c-mode) (fill-test-fill-paragraph-semlf-org-mode) (fill-test-fill-paragraph-semlf-markdown-mode): Rename from `fill-test-semlf-emacs-lisp-mode', `fill-test-semlf-c-mode', `fill-test-semlf-org-mode' and `fill-test-semlf-markdown-mode'. Move test code into erts files. (fill-test-semlf, fill-test-semlf-fill-region) (fill-test-semlf-justify) (fill-test-semlf-sentence-end-double-space) (fill-test-semlf-fill-column) (fill-test-semlf-punctuation-marks, fill-test-semlf-twice) (fill-test-semlf-fill-prefix, fill-test-semlf-indented-block) (fill-test-semlf-revert): Delete tests since they are now grouped with other tests. * test/lisp/textmodes/fill-resources/fill-paragraph.erts: * test/lisp/textmodes/fill-resources/fill-paragraph-semlf.erts: * test/lisp/textmodes/fill-resources/fill-region-as-paragraph.erts: * test/lisp/textmodes/fill-resources/fill-region-as-paragraph-default.erts: * test/lisp/textmodes/fill-resources/fill-region-as-paragraph-semlf.erts: Add test cases for the function specified in the file name, including tests for the scenarios described in the bug report. * test/lisp/textmodes/fill-resources/fill-region.erts: Add test case for custom `fill-region-as-paragraph-function', include test code in the test specification. * test/lisp/textmodes/fill-resources/fill-paragraph-semlf-c-mode.erts: * test/lisp/textmodes/fill-resources/ fill-paragraph-semlf-emacs-lisp-mode.erts: * test/lisp/textmodes/fill-resources/fill-paragraph-semlf-markdown-mode.erts: * test/lisp/textmodes/fill-resources/fill-paragraph-semlf-org-mode.erts: Rename from semlf-*-mode.erts, prefix test names with the tested function and include test code in the test specification. * test/lisp/textmodes/fill-resources/semlf-fill-column.erts: * test/lisp/textmodes/fill-resources/semlf-fill-prefix.erts: * test/lisp/textmodes/fill-resources/semlf-fill-region.erts: * test/lisp/textmodes/fill-resources/semlf-fill-region-as-paragraph.erts: * test/lisp/textmodes/fill-resources/semlf-indented-block.erts: * test/lisp/textmodes/fill-resources/semlf-justify.erts: * test/lisp/textmodes/fill-resources/semlf-punctuation-marks.erts: * test/lisp/textmodes/fill-resources/semlf-revert.erts: * test/lisp/textmodes/fill-resources/semlf-sentence-end-double-space.erts: * test/lisp/textmodes/fill-resources/semlf-twice.erts: * test/lisp/textmodes/fill-resources/semlf.erts: Delete files. (Bug#79575)
168 lines
5.8 KiB
EmacsLisp
168 lines
5.8 KiB
EmacsLisp
;;; fill-tests.el --- ERT tests for fill.el -*- lexical-binding: t -*-
|
|
|
|
;; Copyright (C) 2017-2025 Free Software Foundation, Inc.
|
|
|
|
;; Author: Marcin Borkowski <mbork@mbork.pl>
|
|
;; Keywords: text
|
|
|
|
;; 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:
|
|
|
|
;; This package defines tests for the filling feature, specifically
|
|
;; the `fill-polish-nobreak-p' function.
|
|
|
|
;;; Code:
|
|
|
|
(require 'ert)
|
|
(require 'ert-x)
|
|
|
|
(ert-deftest fill-test-no-fill-polish-nobreak-p nil
|
|
"Tests of the `fill-polish-nobreak-p' function."
|
|
(with-temp-buffer
|
|
(insert "Abc d efg (h ijk).")
|
|
(setq fill-column 8)
|
|
(setq-local fill-nobreak-predicate '())
|
|
(fill-paragraph)
|
|
(should (string= (buffer-string) "Abc d\nefg (h\nijk).")))
|
|
(with-temp-buffer
|
|
(insert "Abc d efg (h ijk).")
|
|
(setq fill-column 8)
|
|
(setq-local fill-nobreak-predicate '(fill-polish-nobreak-p))
|
|
(fill-paragraph)
|
|
(should (string= (buffer-string) "Abc\nd efg\n(h ijk)."))))
|
|
|
|
(ert-deftest fill-test-unbreakable-paragraph ()
|
|
;; See bug#45720 and bug#53537.
|
|
:expected-result :failed
|
|
(with-temp-buffer
|
|
(let ((string "aaa = baaaaaaaaaaaaaaaaaaaaaaaaaaaa\n"))
|
|
(insert string)
|
|
(goto-char (point-min))
|
|
(search-forward "b")
|
|
(let* ((pos (point))
|
|
(beg (pos-bol))
|
|
(end (pos-eol))
|
|
(fill-prefix (make-string (- pos beg) ?\s))
|
|
;; `fill-column' is too small to accommodate the current line
|
|
(fill-column (- end beg 10)))
|
|
(fill-region-as-paragraph beg end nil nil pos))
|
|
(should (equal (buffer-string) string)))))
|
|
|
|
(ert-deftest fill-test-breakable-paragraph ()
|
|
(with-temp-buffer
|
|
(let ((string "aaa = baaaaaaaa aaaaaaaaaa aaaaaaaaaa\n"))
|
|
(insert string)
|
|
(goto-char (point-min))
|
|
(search-forward "b")
|
|
(let* ((pos (point))
|
|
(beg (pos-bol))
|
|
(end (pos-eol))
|
|
(fill-prefix (make-string (- pos beg) ?\s))
|
|
;; `fill-column' is too small to accommodate the current line
|
|
(fill-column (- end beg 10)))
|
|
(fill-region-as-paragraph beg end nil nil pos))
|
|
(should (equal
|
|
(buffer-string)
|
|
"aaa = baaaaaaaa aaaaaaaaaa\n aaaaaaaaaa\n")))))
|
|
|
|
(ert-deftest fill-test-end-period ()
|
|
(should
|
|
(equal
|
|
(with-temp-buffer
|
|
(text-mode)
|
|
(auto-fill-mode)
|
|
(insert "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eius.")
|
|
(self-insert-command 1 ?\s)
|
|
(buffer-string))
|
|
"Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eius. "))
|
|
(should
|
|
(equal
|
|
(with-temp-buffer
|
|
(text-mode)
|
|
(auto-fill-mode)
|
|
(insert "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eius.Foo")
|
|
(forward-char -3)
|
|
(self-insert-command 1 ?\s)
|
|
(buffer-string))
|
|
"Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do
|
|
eius. Foo")))
|
|
|
|
(ert-deftest fill-test-haskell ()
|
|
(should
|
|
(equal
|
|
(with-temp-buffer
|
|
(asm-mode)
|
|
(dolist (line '(" ;; a b c"
|
|
" ;; d e f"
|
|
" ;; x y z"
|
|
" ;; w"))
|
|
(insert line "\n"))
|
|
(goto-char (point-min))
|
|
(end-of-line)
|
|
(setf fill-column 10)
|
|
(fill-paragraph nil)
|
|
(buffer-string))
|
|
" ;; a b c
|
|
;; d e f
|
|
;; x y z
|
|
;; w
|
|
")))
|
|
|
|
(ert-deftest fill-test-fill-region-as-paragraph-default ()
|
|
"Test the `fill-region-as-paragraph-default' function."
|
|
(ert-test-erts-file (ert-resource-file "fill-region-as-paragraph-default.erts")))
|
|
|
|
(ert-deftest fill-test-fill-region-as-paragraph-semlf ()
|
|
"Test the `fill-region-as-paragraph-semlf' function."
|
|
(ert-test-erts-file (ert-resource-file "fill-region-as-paragraph-semlf.erts")))
|
|
|
|
(ert-deftest fill-test-fill-region-as-paragraph ()
|
|
"Test the `fill-region-as-paragraph' function."
|
|
(ert-test-erts-file (ert-resource-file "fill-region-as-paragraph.erts")))
|
|
|
|
(ert-deftest fill-test-fill-region ()
|
|
"Test the `fill-region' function."
|
|
(ert-test-erts-file (ert-resource-file "fill-region.erts")))
|
|
|
|
(ert-deftest fill-test-fill-paragraph ()
|
|
"Test the `fill-paragraph' function."
|
|
(ert-test-erts-file (ert-resource-file "fill-paragraph.erts")))
|
|
|
|
(ert-deftest fill-test-fill-paragraph-semlf ()
|
|
"Test the `fill-paragraph-semlf' function."
|
|
(ert-test-erts-file (ert-resource-file "fill-paragraph-semlf.erts")))
|
|
|
|
(ert-deftest fill-test-fill-paragraph-semlf-emacs-lisp-mode ()
|
|
"Test the `fill-paragraph-semlf' function in `emacs-lisp-mode'."
|
|
(ert-test-erts-file (ert-resource-file "fill-paragraph-semlf-emacs-lisp-mode.erts")))
|
|
|
|
(ert-deftest fill-test-fill-paragraph-semlf-c-mode ()
|
|
"Test the `fill-paragraph-semlf' function in `c-mode'."
|
|
(ert-test-erts-file (ert-resource-file "fill-paragraph-semlf-c-mode.erts")))
|
|
|
|
(ert-deftest fill-test-fill-paragraph-semlf-org-mode ()
|
|
"Test the `fill-paragraph-semlf' function in `org-mode'."
|
|
(ert-test-erts-file (ert-resource-file "fill-paragraph-semlf-org-mode.erts")))
|
|
|
|
(ert-deftest fill-test-fill-paragraph-semlf-markdown-mode ()
|
|
"Test the `fill-paragraph-semlf' function in `markdown-mode'."
|
|
(skip-unless (functionp 'markdown-mode))
|
|
(ert-test-erts-file (ert-resource-file "fill-paragraph-semlf-markdown-mode.erts")))
|
|
|
|
(provide 'fill-tests)
|
|
|
|
;;; fill-tests.el ends here
|