From 33e45e81f4d70a7cf799fb807e6b465de7479425 Mon Sep 17 00:00:00 2001 From: Michael Albinus Date: Sun, 6 Jan 2019 10:12:08 +0100 Subject: [PATCH] Work on filenotify-tests on emba * lisp/filenotify.el (file-notify-callback): Revert last change. * test/lisp/filenotify-tests.el (file-notify-test05-file-validity): Adapt test. --- lisp/filenotify.el | 6 +- test/lisp/filenotify-tests.el | 109 ++++++++++++++++++---------------- 2 files changed, 59 insertions(+), 56 deletions(-) diff --git a/lisp/filenotify.el b/lisp/filenotify.el index 55f92dbbf3d..c05e0657aff 100644 --- a/lisp/filenotify.el +++ b/lisp/filenotify.el @@ -255,10 +255,8 @@ EVENT is the cadr of the event in `file-notify-handle-event' ;; Not, when a file is backed up. (not (and (stringp file1) (backup-file-name-p file1))) ;; Watched file or directory is concerned. - (or (string-equal - file (file-notify--event-watched-file event)) - (file-in-directory-p - file (file-notify--watch-directory watch))))) + (string-equal + file (file-notify--event-watched-file event)))) (file-notify-rm-watch desc))))))) ;; `kqueue', `gfilenotify' and `w32notify' return a unique descriptor diff --git a/test/lisp/filenotify-tests.el b/test/lisp/filenotify-tests.el index 3e99a9aedd0..aac0fc31671 100644 --- a/test/lisp/filenotify-tests.el +++ b/test/lisp/filenotify-tests.el @@ -1018,60 +1018,65 @@ delivered." ;; Cleanup. (file-notify--test-cleanup)) - (unwind-protect - (let ((file-notify--test-tmpdir - (make-temp-file "file-notify-test-parent" t))) - (should - (setq file-notify--test-tmpfile (file-notify--test-make-temp-name) - file-notify--test-desc - (file-notify-add-watch - file-notify--test-tmpdir - '(change) #'file-notify--test-event-handler))) - (should (file-notify-valid-p file-notify--test-desc)) - (file-notify--test-with-events - (cond - ;; w32notify does not raise `deleted' and `stopped' events - ;; for the watched directory. - ((string-equal (file-notify--test-library) "w32notify") - '(created changed deleted)) - ;; gvfs-monitor-dir on cygwin does not detect the `created' - ;; event reliably. - ((string-equal (file-notify--test-library) "gvfs-monitor-dir.exe") - '((deleted stopped) - (created deleted stopped))) - ;; There are two `deleted' events, for the file and for the - ;; directory. Except for cygwin and kqueue. And cygwin - ;; does not raise a `changed' event. - ((eq system-type 'cygwin) - '(created deleted stopped)) - ((string-equal (file-notify--test-library) "kqueue") - '(created changed deleted stopped)) - ;; inotify on emba does not detect `deleted' and `stopped' - ;; events of the directory. - ((and (string-equal (file-notify--test-library) "inotify") - (getenv "EMACS_EMBA_CI")) - '(created changed deleted)) - (t '(created changed deleted deleted stopped))) - (write-region - "any text" nil file-notify--test-tmpfile nil 'no-message) - (file-notify--test-read-event) - (delete-directory file-notify--test-tmpdir 'recursive)) - ;; After deleting the parent directory, the descriptor must - ;; not be valid anymore. - (should-not (file-notify-valid-p file-notify--test-desc)) - ;; w32notify doesn't generate `stopped' events when the parent - ;; directory is deleted, which doesn't provide a chance for - ;; filenotify.el to remove the descriptor from the internal - ;; hash table it maintains. So we must remove the descriptor - ;; manually. - (if (string-equal (file-notify--test-library) "w32notify") - (file-notify--rm-descriptor file-notify--test-desc)) + ;; inotify on emba does not detect `deleted' and + ;; `stopped' events of the directory. + (unless (and (string-equal (file-notify--test-library) "inotify") + (getenv "EMACS_EMBA_CI")) + (unwind-protect + (let ((file-notify--test-tmpdir + (make-temp-file "file-notify-test-parent" t))) + (should + (setq file-notify--test-tmpfile (file-notify--test-make-temp-name) + file-notify--test-desc + (file-notify-add-watch + file-notify--test-tmpdir + '(change) #'file-notify--test-event-handler))) + (should (file-notify-valid-p file-notify--test-desc)) + (file-notify--test-with-events + (cond + ;; w32notify does not raise `deleted' and `stopped' + ;; events for the watched directory. + ((string-equal (file-notify--test-library) "w32notify") + '(created changed deleted)) + ;; gvfs-monitor-dir on cygwin does not detect the + ;; `created' event reliably. + ((string-equal + (file-notify--test-library) "gvfs-monitor-dir.exe") + '((deleted stopped) + (created deleted stopped))) + ;; There are two `deleted' events, for the file and for + ;; the directory. Except for cygwin and kqueue. And + ;; cygwin does not raise a `changed' event. + ((eq system-type 'cygwin) + '(created deleted stopped)) + ((string-equal (file-notify--test-library) "kqueue") + '(created changed deleted stopped)) + ;; inotify on emba does not detect `deleted' and + ;; `stopped' events of the directory. + ((and (string-equal (file-notify--test-library) "inotify") + (getenv "EMACS_EMBA_CI")) + '(created changed deleted)) + (t '(created changed deleted deleted stopped))) + (write-region + "any text" nil file-notify--test-tmpfile nil 'no-message) + (file-notify--test-read-event) + (delete-directory file-notify--test-tmpdir 'recursive)) + ;; After deleting the parent directory, the descriptor must + ;; not be valid anymore. + (should-not (file-notify-valid-p file-notify--test-desc)) + ;; w32notify doesn't generate `stopped' events when the + ;; parent directory is deleted, which doesn't provide a + ;; chance for filenotify.el to remove the descriptor from + ;; the internal hash table it maintains. So we must remove + ;; the descriptor manually. + (if (string-equal (file-notify--test-library) "w32notify") + (file-notify--rm-descriptor file-notify--test-desc)) - ;; The environment shall be cleaned up. - (file-notify--test-cleanup-p)) + ;; The environment shall be cleaned up. + (file-notify--test-cleanup-p)) - ;; Cleanup. - (file-notify--test-cleanup))) + ;; Cleanup. + (file-notify--test-cleanup)))) (file-notify--deftest-remote file-notify-test05-file-validity "Check `file-notify-valid-p' via file notification for remote files.") -- 2.39.5