emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] master 336707e: Test `file-expand-wildcards' for Tramp


From: Michael Albinus
Subject: [Emacs-diffs] master 336707e: Test `file-expand-wildcards' for Tramp
Date: Tue, 22 Aug 2017 10:22:42 -0400 (EDT)

branch: master
commit 336707efb3d173c396ac522490ef2b1b6664eebf
Author: Michael Albinus <address@hidden>
Commit: Michael Albinus <address@hidden>

    Test `file-expand-wildcards' for Tramp
    
    * lisp/net/tramp-compat.el (tramp-advice-file-expand-wildcards):
    Remove, not needed anymore.
    
    * test/lisp/net/tramp-tests.el (top): Require seq.el.
    (tramp-test16-directory-files): Simplify.
    (tramp-test16-file-expand-wildcards): New test.
    (tramp-test28-interrupt-process): Skip for older Emacsen.
---
 lisp/net/tramp-compat.el     | 27 ---------------------
 test/lisp/net/tramp-tests.el | 58 ++++++++++++++++++++++++++++++++++++++++++--
 2 files changed, 56 insertions(+), 29 deletions(-)

diff --git a/lisp/net/tramp-compat.el b/lisp/net/tramp-compat.el
index b2df4d6..9a50d62 100644
--- a/lisp/net/tramp-compat.el
+++ b/lisp/net/tramp-compat.el
@@ -50,33 +50,6 @@
   `(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'."
diff --git a/test/lisp/net/tramp-tests.el b/test/lisp/net/tramp-tests.el
index 129bc1d..85ed646 100644
--- a/test/lisp/net/tramp-tests.el
+++ b/test/lisp/net/tramp-tests.el
@@ -39,6 +39,7 @@
 
 (require 'dired)
 (require 'ert)
+(require 'seq)
 (require 'tramp)
 (require 'vc)
 (require 'vc-bzr)
@@ -2145,8 +2146,7 @@ This tests also `file-directory-p' and 
`file-accessible-directory-p'."
   (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
@@ -2172,6 +2172,58 @@ This tests also `file-directory-p' and 
`file-accessible-directory-p'."
        ;; 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))
@@ -2905,6 +2957,8 @@ This tests also `make-symbolic-link', `file-truename' and 
`add-name-to-file'."
   :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)



reply via email to

[Prev in Thread] Current Thread [Next in Thread]