
* test/lisp/abbrev-tests.el (read-write-abbrev-file-test) (read-write-abbrev-file-test-with-props) (abbrev-edit-save-to-file-test): * test/lisp/auth-source-tests.el (auth-source-test-netrc-create-secret) (auth-source-delete): * test/lisp/autoinsert-tests.el (autoinsert-tests-auto-insert-file): * test/lisp/bookmark-tests.el (with-bookmark-test-save-load): * test/lisp/buff-menu-tests.el (buff-menu-24962): * test/lisp/calendar/icalendar-tests.el (icalendar-tests--do-test-export): * test/lisp/calendar/todo-mode-tests.el (with-todo-test): * test/lisp/dired-tests.el (dired-test-bug27243-01, dired-test-bug27243-02) (dired-test-bug27243-03, dired-test-bug27631) (dired-test-bug27968, dired-test-with-temp-dirs): * test/lisp/dired-x-tests.el (dired-test-bug25942): * test/lisp/emacs-lisp/bytecomp-tests.el (bytecomp-tests--with-temp-file): * test/lisp/emacs-lisp/check-declare-tests.el (check-declare-tests-scan) (check-declare-tests-verify-mismatch): * test/lisp/emacs-lisp/edebug-tests.el (edebug-tests-with-normal-env): * test/lisp/emacs-lisp/package-tests.el (with-package-test) (package-test-signed): * test/lisp/emacs-lisp/testcover-tests.el (testcover-tests-markup-region) (testcover-tests-run-test-case): * test/lisp/emulation/viper-tests.el (viper-test-undo-kmacro): * test/lisp/epg-tests.el (with-epg-tests): * test/lisp/eshell/em-hist-tests.el (eshell-write-readonly-history): * test/lisp/eshell/em-ls-tests.el (em-ls-test-bug27631): * test/lisp/ffap-tests.el (ffap-tests-25243): * test/lisp/files-tests.el (files-tests-bug-18141) (files-tests-read-file-in-~, files-tests-make-directory) (files-tests-copy-directory, files-tests-executable-find) (files-tests-dont-rewrite-precious-files) (files-tests--save-some-buffers): * test/lisp/ls-lisp-tests.el (ls-lisp-test-bug27631): * test/lisp/mail/uudecode-tests.el (uudecode-tests-decode-region-internal) (uudecode-tests-decode-region-external): * test/lisp/net/browse-url-tests.el (browse-url-tests-delete-temp-file): * test/lisp/progmodes/elisp-mode-tests.el (xref--case-insensitive): * test/lisp/progmodes/etags-tests.el (etags-buffer-local-tags-table-list): * test/lisp/progmodes/flymake-tests.el (ruby-backend): * test/lisp/progmodes/python-tests.el (python-tests-with-temp-file): * test/lisp/progmodes/sql-tests.el (with-sql-test-connect-harness): * test/lisp/saveplace-tests.el (saveplace-test-save-place-to-alist/file) (saveplace-test-forget-unreadable-files) (saveplace-test-place-alist-to-file): * test/lisp/so-long-tests/spelling-tests.el: * test/lisp/textmodes/reftex-tests.el (reftex-locate-bibliography-files) (reftex-parse-from-file-test): * test/lisp/thumbs-tests.el (thumbs-tests-thumbsdir/create-if-missing): * test/lisp/vc/vc-bzr-tests.el (vc-bzr-test-bug9726) (vc-bzr-test-bug9781, vc-bzr-test-faulty-bzr-autoloads): * test/lisp/vc/diff-mode-tests.el (diff-mode-test-ignore-trailing-dashes): * test/lisp/vc/ediff-ptch-tests.el (ediff-ptch-test-bug26084): * test/lisp/wdired-tests.el (wdired-test-bug32173-01) (wdired-test-bug32173-02, wdired-test-symlink-name) (wdired-test-unfinished-edit-01, wdired-test-bug34915) (wdired-test-bug39280): * test/src/buffer-tests.el (test-kill-buffer-auto-save-default): * test/src/filelock-tests.el (filelock-tests--fixture): * test/src/inotify-tests.el (inotify-file-watch-simple): * test/src/undo-tests.el (undo-test-file-modified): Prefer 'ert-with-temp-(directory|file)' to using 'make-temp-file' directly. In some cases, this is just cleanup, but in several cases this fixes bugs where an error would have lead to us not cleaning up.
108 lines
3.5 KiB
EmacsLisp
108 lines
3.5 KiB
EmacsLisp
;;; check-declare-tests.el --- Tests for check-declare.el -*- lexical-binding: t; -*-
|
|
|
|
;; Copyright (C) 2020-2021 Free Software Foundation, Inc.
|
|
|
|
;; Author: Simen Heggestøyl <simenheg@gmail.com>
|
|
;; Keywords:
|
|
|
|
;; 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 'check-declare)
|
|
(require 'ert)
|
|
(require 'ert-x)
|
|
(eval-when-compile (require 'subr-x))
|
|
|
|
(ert-deftest check-declare-tests-locate ()
|
|
(should (file-exists-p (check-declare-locate "check-declare" "")))
|
|
(should
|
|
(string-prefix-p "ext:" (check-declare-locate "ext:foo" ""))))
|
|
|
|
(ert-deftest check-declare-tests-scan ()
|
|
(ert-with-temp-file file
|
|
(with-temp-file file
|
|
(insert
|
|
(string-join
|
|
'(";; foo comment"
|
|
"(declare-function ring-insert \"ring\" (ring item))"
|
|
"(let ((foo 'code)) foo)")
|
|
"\n")))
|
|
(let ((res (check-declare-scan file)))
|
|
(should (= (length res) 1))
|
|
(pcase-let ((`((,fnfile ,fn ,arglist ,fileonly)) res))
|
|
(should (string-match-p "ring" fnfile))
|
|
(should (equal "ring-insert" fn))
|
|
(should (equal '(ring item) arglist))
|
|
(should-not fileonly)))))
|
|
|
|
(ert-deftest check-declare-tests-verify ()
|
|
(ert-with-temp-file file
|
|
(with-temp-file file
|
|
(insert
|
|
(string-join
|
|
'(";; foo comment"
|
|
"(defun foo-fun ())"
|
|
"(defun ring-insert (ring item)"
|
|
"\"Insert onto ring RING the item ITEM.\""
|
|
"nil)")
|
|
"\n")))
|
|
(should-not
|
|
(check-declare-verify
|
|
file '(("foo.el" "ring-insert" (ring item)))))))
|
|
|
|
(ert-deftest check-declare-tests-verify-mismatch ()
|
|
(ert-with-temp-file file
|
|
(with-temp-file file
|
|
(insert
|
|
(string-join
|
|
'(";; foo comment"
|
|
"(defun foo-fun ())"
|
|
"(defun ring-insert (ring)"
|
|
"\"Insert onto ring RING the item ITEM.\""
|
|
"nil)")
|
|
"\n")))
|
|
(should
|
|
(equal
|
|
(check-declare-verify
|
|
file '(("foo.el" "ring-insert" (ring item))))
|
|
'(("foo.el" "ring-insert" "arglist mismatch"))))))
|
|
|
|
(ert-deftest check-declare-tests-sort ()
|
|
(should-not (check-declare-sort '()))
|
|
(should (equal (check-declare-sort '((a (1 a)) (b (2)) (d (1 d))))
|
|
'((2 (b)) (1 (a a) (d d))))))
|
|
|
|
(ert-deftest check-declare-tests-warn ()
|
|
(with-temp-buffer
|
|
(let ((check-declare-warning-buffer (buffer-name)))
|
|
(check-declare-warn
|
|
"foo-file" "foo-fun" "bar-file" "it wasn't" 999)
|
|
(let ((res (buffer-string)))
|
|
;; Don't care too much about the format of the output, but
|
|
;; check that key information is present.
|
|
(should (string-search "foo-file" res))
|
|
(should (string-search "foo-fun" res))
|
|
(should (string-search "bar-file" res))
|
|
(should (string-search "it wasn't" res))
|
|
(should (string-search "999" res))))))
|
|
|
|
(provide 'check-declare-tests)
|
|
;;; check-declare-tests.el ends here
|