emacs-diffs
[Top][All Lists]
Advanced

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

[Emacs-diffs] master 560d6f9: Fix filenotify.el issue for kqueue


From: Michael Albinus
Subject: [Emacs-diffs] master 560d6f9: Fix filenotify.el issue for kqueue
Date: Wed, 22 Mar 2017 15:33:12 -0400 (EDT)

branch: master
commit 560d6f91246ee90ac6e630ae941097a4d4f8f730
Author: Michael Albinus <address@hidden>
Commit: Michael Albinus <address@hidden>

    Fix filenotify.el issue for kqueue
    
    * lisp/filenotify.el (file-notify-add-watch): Use directory
    for remote file name handlers.
    
    * test/lisp/filenotify-tests.el (file-notify-test01-add-watch):
    Create/delete temporary file only for "kqueue".
    (file-notify-test02-rm-watch): Create/delete temporary files.
---
 lisp/filenotify.el            | 10 +++-------
 test/lisp/filenotify-tests.el | 15 +++++++++++++--
 2 files changed, 16 insertions(+), 9 deletions(-)

diff --git a/lisp/filenotify.el b/lisp/filenotify.el
index 7eb6229..80e9f89 100644
--- a/lisp/filenotify.el
+++ b/lisp/filenotify.el
@@ -347,13 +347,7 @@ FILE is the name of the file whose event is being 
reported."
     (if handler
        ;; A file name handler could exist even if there is no local
        ;; file notification support.
-       (setq desc (funcall
-                   handler 'file-notify-add-watch
-                    ;; kqueue does not report file changes in
-                    ;; directory monitor.  So we must watch the file
-                    ;; itself.
-                    (if (eq file-notify--library 'kqueue) file dir)
-                    flags callback))
+       (setq desc (funcall handler 'file-notify-add-watch dir flags callback))
 
       ;; Check, whether Emacs has been compiled with file notification
       ;; support.
@@ -391,6 +385,8 @@ FILE is the name of the file whose event is being reported."
 
       ;; Call low-level function.
       (setq desc (funcall
+                  ;; kqueue does not report file changes in directory
+                  ;; monitor.  So we must watch the file itself.
                   func (if (eq file-notify--library 'kqueue) file dir)
                   l-flags 'file-notify-callback)))
 
diff --git a/test/lisp/filenotify-tests.el b/test/lisp/filenotify-tests.el
index 654e1af..329ea58 100644
--- a/test/lisp/filenotify-tests.el
+++ b/test/lisp/filenotify-tests.el
@@ -294,13 +294,20 @@ This returns only for the local case and gfilenotify; 
otherwise it is nil.
                (file-notify-add-watch
                 temporary-file-directory '(change attribute-change) #'ignore)))
         (file-notify-rm-watch file-notify--test-desc)
-        (write-region "any text" nil file-notify--test-tmpfile nil 'no-message)
+
+        ;; File monitors like kqueue insist, that the watched file
+        ;; exists.  Directory monitors are not bound to this
+        ;; restriction.
+        (when (string-equal (file-notify--test-library) "kqueue")
+          (write-region
+           "any text" nil file-notify--test-tmpfile nil 'no-message))
         (should
          (setq file-notify--test-desc
                (file-notify-add-watch
                 file-notify--test-tmpfile '(change attribute-change) 
#'ignore)))
         (file-notify-rm-watch file-notify--test-desc)
-        (delete-file file-notify--test-tmpfile)
+        (when (string-equal (file-notify--test-library) "kqueue")
+          (delete-file file-notify--test-tmpfile))
 
         ;; Check error handling.
         (should-error (file-notify-add-watch 1 2 3 4)
@@ -378,6 +385,8 @@ This returns only for the local case and gfilenotify; 
otherwise it is nil.
       (progn
         (setq file-notify--test-tmpfile (file-notify--test-make-temp-name)
               file-notify--test-tmpfile1 (file-notify--test-make-temp-name))
+        (write-region "any text" nil file-notify--test-tmpfile nil 'no-message)
+        (write-region "any text" nil file-notify--test-tmpfile1 nil 
'no-message)
         (should
          (setq file-notify--test-desc
                (file-notify-add-watch
@@ -390,6 +399,8 @@ This returns only for the local case and gfilenotify; 
otherwise it is nil.
         (file-notify-rm-watch file-notify--test-desc)
         (file-notify-rm-watch file-notify--test-desc)
         (file-notify-rm-watch file-notify--test-desc1)
+        (delete-file file-notify--test-tmpfile)
+        (delete-file file-notify--test-tmpfile1)
 
         ;; The environment shall be cleaned up.
         (file-notify--test-cleanup-p))



reply via email to

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