mirror of
git://git.sv.gnu.org/emacs.git
synced 2026-01-06 03:40:56 -08:00
* doc/lispref/functions.texi (Declare Form): Document `interactive-args' * lisp/replace.el (replace-string): Store the correct interactive arguments (bug#45607). * lisp/emacs-lisp/byte-run.el (byte-run--set-interactive-args): New function. (defun-declarations-alist): Use it. * src/callint.c (fix_command): Remove the old hack (which now longer works since interactive specs are byte-compiled) and instead rely on `interactive-args'.
68 lines
2.3 KiB
EmacsLisp
68 lines
2.3 KiB
EmacsLisp
;;; callint-tests.el --- unit tests for callint.c -*- lexical-binding: t; -*-
|
|
|
|
;; Copyright (C) 2018-2022 Free Software Foundation, Inc.
|
|
|
|
;; Author: Philipp Stephani <phst@google.com>
|
|
|
|
;; 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:
|
|
|
|
;; Unit tests for src/callint.c.
|
|
|
|
;;; Code:
|
|
|
|
(require 'ert)
|
|
|
|
(ert-deftest call-interactively/incomplete-multibyte-sequence ()
|
|
"Check that Bug#30004 is fixed."
|
|
(let* ((text-quoting-style 'grave)
|
|
(data (should-error (call-interactively (lambda () (interactive "\xFF"))))))
|
|
(should
|
|
(equal
|
|
(cdr data)
|
|
'("Invalid control letter `\u00FF' (#o377, #x00ff) in interactive calling string")))))
|
|
|
|
(ert-deftest call-interactively/embedded-nulls ()
|
|
"Check that Bug#30005 is fixed."
|
|
(should (equal (let ((unread-command-events '(?a ?b)))
|
|
(call-interactively (lambda (a b)
|
|
(interactive "ka\0a: \nkb: ")
|
|
(list a b))))
|
|
'("a" "b"))))
|
|
|
|
(ert-deftest call-interactively-prune-command-history ()
|
|
"Check that Bug#31211 is fixed."
|
|
(let ((history-length 1)
|
|
(command-history ()))
|
|
(dotimes (_ (1+ history-length))
|
|
(call-interactively #'ignore t))
|
|
(should (= (length command-history) history-length))))
|
|
|
|
(defun callint-test-int-args (foo bar &optional zot)
|
|
(declare (interactive-args
|
|
(bar 10)
|
|
(zot 11)))
|
|
(interactive (list 1 1 1))
|
|
(+ foo bar zot))
|
|
|
|
(ert-deftest test-interactive-args ()
|
|
(let ((history-length 1)
|
|
(command-history ()))
|
|
(should (= (call-interactively 'callint-test-int-args t) 3))
|
|
(should (equal command-history '((callint-test-int-args 1 10 11))))))
|
|
|
|
;;; callint-tests.el ends here
|