`(when (functionp ,function)
(with-no-warnings (funcall ,function ,@arguments))))
-;; We currently use "[" and "]" in the filename format for IPv6 hosts
-;; of GNU Emacs. This means that Emacs wants to expand wildcards if
-;; `find-file-wildcards' is non-nil, and then barfs because no
-;; expansion could be found. We detect this situation and do
-;; something really awful: we have `file-expand-wildcards' return the
-;; original filename if it can't expand anything. Let's just hope
-;; that this doesn't break anything else. It is not needed anymore
-;; since GNU Emacs 23.2.
-(unless (featurep 'files 'remote-wildcards)
- (defadvice file-expand-wildcards
- (around tramp-advice-file-expand-wildcards activate)
- (let ((name (ad-get-arg 0)))
- ;; If it's a Tramp file, look if wildcards need to be expanded
- ;; at all.
- (if (and
- (tramp-tramp-file-p name)
- (not (string-match "[[*?]" (file-remote-p name 'localname))))
- (setq ad-return-value (list name))
- ;; Otherwise, just run the original function.
- ad-do-it)))
- (add-hook
- 'tramp-unload-hook
- (lambda ()
- (ad-remove-advice
- 'file-expand-wildcards 'around 'tramp-advice-file-expand-wildcards)
- (ad-activate 'file-expand-wildcards))))
-
(defsubst tramp-compat-temporary-file-directory ()
"Return name of directory for temporary files.
It is the default value of `temporary-file-directory'."
(require 'dired)
(require 'ert)
+(require 'seq)
(require 'tramp)
(require 'vc)
(require 'vc-bzr)
(skip-unless (tramp--test-enabled))
(dolist (quoted (if tramp--test-expensive-test '(nil t) '(nil)))
- (let* ((tmp-name1
- (expand-file-name (tramp--test-make-temp-name nil quoted)))
+ (let* ((tmp-name1 (tramp--test-make-temp-name nil quoted))
(tmp-name2 (expand-file-name "bla" tmp-name1))
(tmp-name3 (expand-file-name "foo" tmp-name1)))
(unwind-protect
;; Cleanup.
(ignore-errors (delete-directory tmp-name1 'recursive))))))
+;; This is not a file name handler test. But Tramp needed to apply an
+;; advice for older Emacs versions, so we check that this has been fixed.
+(ert-deftest tramp-test16-file-expand-wildcards ()
+ "Check `file-expand-wildcards'."
+ (skip-unless (tramp--test-enabled))
+
+ (dolist (quoted (if tramp--test-expensive-test '(nil t) '(nil)))
+ (let* ((tmp-name1 (tramp--test-make-temp-name nil quoted))
+ (tmp-name2 (expand-file-name "foo" tmp-name1))
+ (tmp-name3 (expand-file-name "bar" tmp-name1))
+ (tmp-name4 (expand-file-name "baz" tmp-name1))
+ (default-directory tmp-name1))
+ (unwind-protect
+ (progn
+ (make-directory tmp-name1)
+ (write-region "foo" nil tmp-name2)
+ (write-region "bar" nil tmp-name3)
+ (write-region "baz" nil tmp-name4)
+ (should (file-directory-p tmp-name1))
+ (should (file-exists-p tmp-name2))
+ (should (file-exists-p tmp-name3))
+ (should (file-exists-p tmp-name4))
+
+ ;; We cannot use `sort', it works destructive.
+ (should (equal (file-expand-wildcards "*")
+ (seq-sort 'string< '("foo" "bar" "baz"))))
+ (should (equal (file-expand-wildcards "ba?")
+ (seq-sort 'string< '("bar" "baz"))))
+ (should (equal (file-expand-wildcards "ba[rz]")
+ (seq-sort 'string< '("bar" "baz"))))
+
+ (should (equal (file-expand-wildcards "*" 'full)
+ (seq-sort
+ 'string< `(,tmp-name2 ,tmp-name3 ,tmp-name4))))
+ (should (equal (file-expand-wildcards "ba?" 'full)
+ (seq-sort 'string< `(,tmp-name3 ,tmp-name4))))
+ (should (equal (file-expand-wildcards "ba[rz]" 'full)
+ (seq-sort 'string< `(,tmp-name3 ,tmp-name4))))
+
+ (should (equal (file-expand-wildcards (concat tmp-name1 "/" "*"))
+ (seq-sort
+ 'string< `(,tmp-name2 ,tmp-name3 ,tmp-name4))))
+ (should (equal (file-expand-wildcards (concat tmp-name1 "/" "ba?"))
+ (seq-sort 'string< `(,tmp-name3 ,tmp-name4))))
+ (should (equal (file-expand-wildcards
+ (concat tmp-name1 "/" "ba[rz]"))
+ (seq-sort 'string< `(,tmp-name3 ,tmp-name4)))))
+
+ ;; Cleanup.
+ (ignore-errors
+ (delete-directory tmp-name1))))))
+
(ert-deftest tramp-test17-insert-directory ()
"Check `insert-directory'."
(skip-unless (tramp--test-enabled))
:tags '(:expensive-test)
(skip-unless (tramp--test-enabled))
(skip-unless (tramp--test-sh-p))
+ ;; Since Emacs 26.1.
+ (skip-unless (boundp 'interrupt-process-functions))
(let ((default-directory tramp-test-temporary-file-directory)
kill-buffer-query-functions proc)