Finish work on filenotify-tests.el
* test/lisp/filenotify-tests.el (file-notify--test-monitors): New variable. (file-notify--test-cleanup, file-notify--test-monitor): Use it. (file-notify--test-read-event, file-notify-test02-events) (file-notify-test04-file-validity): Handle "gvfs-monitor-dir.exe". (file-notify-test03-autorevert) (file-notify-test08-watched-file-in-watched-dir): Set `file-notify--test-desc' for proper work of `file-notify--test-monitor'. (Bug#21804)
This commit is contained in:
parent
1d714e41ea
commit
975b2acfe6
1 changed files with 70 additions and 14 deletions
|
@ -63,6 +63,7 @@
|
|||
(defvar file-notify--test-results nil)
|
||||
(defvar file-notify--test-event nil)
|
||||
(defvar file-notify--test-events nil)
|
||||
(defvar file-notify--test-monitors nil)
|
||||
|
||||
(defun file-notify--test-read-event ()
|
||||
"Read one event.
|
||||
|
@ -78,6 +79,7 @@ There are different timeouts for local and remote file notification libraries."
|
|||
(memq (file-notify--test-monitor)
|
||||
'(GFamFileMonitor GPollFileMonitor)))
|
||||
7)
|
||||
((string-equal (file-notify--test-library) "gvfs-monitor-dir.exe") 1)
|
||||
((file-remote-p temporary-file-directory) 0.1)
|
||||
(t 0.01))))
|
||||
|
||||
|
@ -153,7 +155,8 @@ Return nil when any other file notification watch is still active."
|
|||
file-notify--test-desc1 nil
|
||||
file-notify--test-desc2 nil
|
||||
file-notify--test-results nil
|
||||
file-notify--test-events nil))
|
||||
file-notify--test-events nil
|
||||
file-notify--test-monitors nil))
|
||||
|
||||
(setq password-cache-expiry nil
|
||||
tramp-verbose 0
|
||||
|
@ -210,10 +213,16 @@ remote host, or nil."
|
|||
"The used monitor for the test, as a symbol.
|
||||
This returns only for the local case and gfilenotify; otherwise it is nil.
|
||||
`file-notify--test-desc' must be a valid watch descriptor."
|
||||
(and file-notify--test-desc
|
||||
(null (file-remote-p temporary-file-directory))
|
||||
(functionp 'gfile-monitor-name)
|
||||
(gfile-monitor-name file-notify--test-desc)))
|
||||
;; We cache the result, because after `file-notify-rm-watch',
|
||||
;; `gfile-monitor-name' does not return a proper result anymore.
|
||||
;; But we still need this information.
|
||||
(unless (file-remote-p temporary-file-directory)
|
||||
(or (cdr (assq file-notify--test-desc file-notify--test-monitors))
|
||||
(when (functionp 'gfile-monitor-name)
|
||||
(add-to-list 'file-notify--test-monitors
|
||||
(cons file-notify--test-desc
|
||||
(gfile-monitor-name file-notify--test-desc)))
|
||||
(cdr (assq file-notify--test-desc file-notify--test-monitors))))))
|
||||
|
||||
(defmacro file-notify--deftest-remote (test docstring)
|
||||
"Define ert `TEST-remote' for remote files."
|
||||
|
@ -444,6 +453,12 @@ delivered."
|
|||
'(change) #'file-notify--test-event-handler)))
|
||||
(file-notify--test-with-events
|
||||
(cond
|
||||
;; 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)))
|
||||
;; cygwin does not raise a `changed' event.
|
||||
((eq system-type 'cygwin)
|
||||
'(created deleted stopped))
|
||||
|
@ -463,9 +478,15 @@ delivered."
|
|||
file-notify--test-tmpfile
|
||||
'(change) #'file-notify--test-event-handler)))
|
||||
(file-notify--test-with-events
|
||||
;; There could be one or two `changed' events.
|
||||
'((changed deleted stopped)
|
||||
(changed changed deleted stopped))
|
||||
(cond
|
||||
;; gvfs-monitor-dir on cygwin does not detect the
|
||||
;; `changed' event reliably.
|
||||
((string-equal (file-notify--test-library) "gvfs-monitor-dir.exe")
|
||||
'((deleted stopped)
|
||||
(changed deleted stopped)))
|
||||
;; There could be one or two `changed' events.
|
||||
(t '((changed deleted stopped)
|
||||
(changed changed deleted stopped))))
|
||||
(write-region
|
||||
"another text" nil file-notify--test-tmpfile nil 'no-message)
|
||||
(file-notify--test-read-event)
|
||||
|
@ -489,6 +510,12 @@ delivered."
|
|||
;; 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.
|
||||
|
@ -522,6 +549,12 @@ delivered."
|
|||
'(created changed created changed
|
||||
changed changed changed
|
||||
deleted 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 created deleted stopped)))
|
||||
;; There are three `deleted' events, for two files and
|
||||
;; for the directory. Except for cygwin and kqueue.
|
||||
((eq system-type 'cygwin)
|
||||
|
@ -559,6 +592,12 @@ delivered."
|
|||
;; events for the watched directory.
|
||||
((string-equal (file-notify--test-library) "w32notify")
|
||||
'(created changed renamed 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 raises `created' and `deleted' events instead
|
||||
|
@ -578,8 +617,7 @@ delivered."
|
|||
(file-notify-rm-watch file-notify--test-desc))
|
||||
|
||||
;; Check attribute change. Does not work for cygwin.
|
||||
(unless (and (eq system-type 'cygwin)
|
||||
(not (file-remote-p temporary-file-directory)))
|
||||
(unless (eq system-type 'cygwin)
|
||||
(setq file-notify--test-tmpfile (file-notify--test-make-temp-name))
|
||||
(write-region
|
||||
"any text" nil file-notify--test-tmpfile nil 'no-message)
|
||||
|
@ -654,6 +692,11 @@ delivered."
|
|||
(while (null auto-revert-notify-watch-descriptor)
|
||||
(sleep-for 1)))
|
||||
|
||||
;; `file-notify--test-monitor' needs to know
|
||||
;; `file-notify--test-desc' in order to compute proper
|
||||
;; timeouts.
|
||||
(setq file-notify--test-desc auto-revert-notify-watch-descriptor)
|
||||
|
||||
;; Check, that file notification has been used.
|
||||
(should auto-revert-mode)
|
||||
(should auto-revert-use-notify)
|
||||
|
@ -748,9 +791,15 @@ delivered."
|
|||
'(change) #'file-notify--test-event-handler)))
|
||||
(should (file-notify-valid-p file-notify--test-desc))
|
||||
(file-notify--test-with-events
|
||||
;; There could be one or two `changed' events.
|
||||
'((changed deleted stopped)
|
||||
(changed changed deleted stopped))
|
||||
(cond
|
||||
;; gvfs-monitor-dir on cygwin does not detect the
|
||||
;; `changed' event reliably.
|
||||
((string-equal (file-notify--test-library) "gvfs-monitor-dir.exe")
|
||||
'((deleted stopped)
|
||||
(changed deleted stopped)))
|
||||
;; There could be one or two `changed' events.
|
||||
(t '((changed deleted stopped)
|
||||
(changed changed deleted stopped))))
|
||||
(write-region
|
||||
"another text" nil file-notify--test-tmpfile nil 'no-message)
|
||||
(file-notify--test-read-event)
|
||||
|
@ -781,6 +830,11 @@ delivered."
|
|||
;; 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.
|
||||
|
@ -1043,7 +1097,9 @@ the file watch."
|
|||
(setq file-notify--test-desc1
|
||||
(file-notify-add-watch
|
||||
file-notify--test-tmpfile
|
||||
'(change) #'dir-callback)))
|
||||
'(change) #'dir-callback)
|
||||
;; This is needed for `file-notify--test-monitor'.
|
||||
file-notify--test-desc file-notify--test-desc1))
|
||||
(should
|
||||
(setq file-notify--test-desc2
|
||||
(file-notify-add-watch
|
||||
|
|
Loading…
Add table
Reference in a new issue