mirror of
https://git.savannah.gnu.org/git/emacs.git
synced 2025-01-26 19:18:50 +00:00
* test/lisp/filenotify-tests.el (file-notify-test03-events): Cleanup subtests.
This commit is contained in:
parent
ffeb1164d4
commit
35e4a0def9
@ -566,35 +566,42 @@ delivered."
|
||||
(skip-unless (file-notify--test-local-enabled))
|
||||
|
||||
(unwind-protect
|
||||
(progn
|
||||
;; Check file creation, change and deletion. It doesn't work
|
||||
;; for kqueue, because we don't use an implicit directory
|
||||
;; monitor.
|
||||
(unless (string-equal (file-notify--test-library) "kqueue")
|
||||
(setq file-notify--test-tmpfile (file-notify--test-make-temp-name))
|
||||
(should
|
||||
(setq file-notify--test-desc
|
||||
(file-notify-add-watch
|
||||
file-notify--test-tmpfile
|
||||
'(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))
|
||||
(t '(created changed deleted stopped)))
|
||||
(write-region
|
||||
"another text" nil file-notify--test-tmpfile nil 'no-message)
|
||||
(file-notify--test-read-event)
|
||||
(delete-file file-notify--test-tmpfile))
|
||||
(file-notify-rm-watch file-notify--test-desc))
|
||||
;; Check file creation, change and deletion. It doesn't work
|
||||
;; for kqueue, because we don't use an implicit directory
|
||||
;; monitor.
|
||||
(unless (string-equal (file-notify--test-library) "kqueue")
|
||||
(setq file-notify--test-tmpfile (file-notify--test-make-temp-name))
|
||||
(should
|
||||
(setq file-notify--test-desc
|
||||
(file-notify-add-watch
|
||||
file-notify--test-tmpfile
|
||||
'(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))
|
||||
(t '(created changed deleted stopped)))
|
||||
(write-region
|
||||
"another text" nil file-notify--test-tmpfile nil 'no-message)
|
||||
(file-notify--test-read-event)
|
||||
(delete-file file-notify--test-tmpfile))
|
||||
(file-notify-rm-watch file-notify--test-desc)
|
||||
|
||||
;; The environment shall be cleaned up.
|
||||
(file-notify--test-cleanup-p))
|
||||
|
||||
;; Cleanup.
|
||||
(file-notify--test-cleanup))
|
||||
|
||||
(unwind-protect
|
||||
(progn
|
||||
;; Check file change and deletion.
|
||||
(setq file-notify--test-tmpfile (file-notify--test-make-temp-name))
|
||||
(write-region "any text" nil file-notify--test-tmpfile nil 'no-message)
|
||||
@ -619,163 +626,191 @@ delivered."
|
||||
(delete-file file-notify--test-tmpfile))
|
||||
(file-notify-rm-watch file-notify--test-desc)
|
||||
|
||||
;; Check file creation, change and deletion when watching a
|
||||
;; directory. There must be a `stopped' event when deleting
|
||||
;; the directory.
|
||||
(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)))
|
||||
(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))
|
||||
(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))
|
||||
(file-notify-rm-watch file-notify--test-desc))
|
||||
;; The environment shall be cleaned up.
|
||||
(file-notify--test-cleanup-p))
|
||||
|
||||
;; Check copy of files inside a directory.
|
||||
(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-tmpfile1 (file-notify--test-make-temp-name)
|
||||
file-notify--test-desc
|
||||
(file-notify-add-watch
|
||||
file-notify--test-tmpdir
|
||||
'(change) #'file-notify--test-event-handler)))
|
||||
(file-notify--test-with-events
|
||||
(cond
|
||||
;; w32notify does not distinguish between `changed' and
|
||||
;; `attribute-changed'. It does not raise `deleted'
|
||||
;; and `stopped' events for the watched directory.
|
||||
((string-equal (file-notify--test-library) "w32notify")
|
||||
'(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)
|
||||
'(created created changed changed deleted stopped))
|
||||
((string-equal (file-notify--test-library) "kqueue")
|
||||
'(created changed created changed deleted stopped))
|
||||
(t '(created changed created changed
|
||||
deleted deleted deleted stopped)))
|
||||
(write-region
|
||||
"any text" nil file-notify--test-tmpfile nil 'no-message)
|
||||
(file-notify--test-read-event)
|
||||
(copy-file file-notify--test-tmpfile file-notify--test-tmpfile1)
|
||||
;; The next two events shall not be visible.
|
||||
(file-notify--test-read-event)
|
||||
(set-file-modes file-notify--test-tmpfile 000)
|
||||
(file-notify--test-read-event)
|
||||
(set-file-times file-notify--test-tmpfile '(0 0))
|
||||
(file-notify--test-read-event)
|
||||
(delete-directory file-notify--test-tmpdir 'recursive))
|
||||
(file-notify-rm-watch file-notify--test-desc))
|
||||
;; Cleanup.
|
||||
(file-notify--test-cleanup))
|
||||
|
||||
;; Check rename of files inside a directory.
|
||||
(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-tmpfile1 (file-notify--test-make-temp-name)
|
||||
file-notify--test-desc
|
||||
(file-notify-add-watch
|
||||
file-notify--test-tmpdir
|
||||
'(change) #'file-notify--test-event-handler)))
|
||||
(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 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
|
||||
;; of a `renamed' event.
|
||||
((eq system-type 'cygwin)
|
||||
'(created created deleted deleted stopped))
|
||||
((string-equal (file-notify--test-library) "kqueue")
|
||||
'(created changed renamed deleted stopped))
|
||||
(t '(created changed renamed deleted deleted stopped)))
|
||||
(write-region
|
||||
"any text" nil file-notify--test-tmpfile nil 'no-message)
|
||||
(file-notify--test-read-event)
|
||||
(rename-file file-notify--test-tmpfile file-notify--test-tmpfile1)
|
||||
;; After the rename, we won't get events anymore.
|
||||
(file-notify--test-read-event)
|
||||
(delete-directory file-notify--test-tmpdir 'recursive))
|
||||
(file-notify-rm-watch file-notify--test-desc))
|
||||
|
||||
;; Check attribute change. Does not work for cygwin.
|
||||
(unless (eq system-type 'cygwin)
|
||||
(setq file-notify--test-tmpfile (file-notify--test-make-temp-name))
|
||||
(unwind-protect
|
||||
;; Check file creation, change and deletion when watching a
|
||||
;; directory. There must be a `stopped' event when deleting the
|
||||
;; directory.
|
||||
(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)))
|
||||
(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))
|
||||
(t '(created changed deleted deleted stopped)))
|
||||
(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
|
||||
'(attribute-change) #'file-notify--test-event-handler)))
|
||||
(file-notify--test-with-events
|
||||
(cond
|
||||
;; w32notify does not distinguish between `changed' and
|
||||
;; `attribute-changed'. Under MS Windows 7, we get
|
||||
;; four `changed' events, and under MS Windows 10 just
|
||||
;; two. Strange.
|
||||
((string-equal (file-notify--test-library) "w32notify")
|
||||
'((changed changed)
|
||||
(changed changed changed changed)))
|
||||
;; For kqueue and in the remote case, `write-region'
|
||||
;; raises also an `attribute-changed' event.
|
||||
((or (string-equal (file-notify--test-library) "kqueue")
|
||||
(file-remote-p temporary-file-directory))
|
||||
'(attribute-changed attribute-changed attribute-changed))
|
||||
(t '(attribute-changed attribute-changed)))
|
||||
(write-region
|
||||
"any text" nil file-notify--test-tmpfile nil 'no-message)
|
||||
(file-notify--test-read-event)
|
||||
(set-file-modes file-notify--test-tmpfile 000)
|
||||
(file-notify--test-read-event)
|
||||
(set-file-times file-notify--test-tmpfile '(0 0))
|
||||
(file-notify--test-read-event)
|
||||
(delete-file file-notify--test-tmpfile))
|
||||
(file-notify-rm-watch file-notify--test-desc))
|
||||
(file-notify--test-read-event)
|
||||
(delete-directory file-notify--test-tmpdir 'recursive))
|
||||
(file-notify-rm-watch file-notify--test-desc)
|
||||
|
||||
;; The environment shall be cleaned up.
|
||||
(file-notify--test-cleanup-p))
|
||||
|
||||
;; Cleanup.
|
||||
(file-notify--test-cleanup))
|
||||
|
||||
(unwind-protect
|
||||
;; Check copy of files inside a directory.
|
||||
(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-tmpfile1 (file-notify--test-make-temp-name)
|
||||
file-notify--test-desc
|
||||
(file-notify-add-watch
|
||||
file-notify--test-tmpdir
|
||||
'(change) #'file-notify--test-event-handler)))
|
||||
(file-notify--test-with-events
|
||||
(cond
|
||||
;; w32notify does not distinguish between `changed' and
|
||||
;; `attribute-changed'. It does not raise `deleted' and
|
||||
;; `stopped' events for the watched directory.
|
||||
((string-equal (file-notify--test-library) "w32notify")
|
||||
'(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)
|
||||
'(created created changed changed deleted stopped))
|
||||
((string-equal (file-notify--test-library) "kqueue")
|
||||
'(created changed created changed deleted stopped))
|
||||
(t '(created changed created changed
|
||||
deleted deleted deleted stopped)))
|
||||
(write-region
|
||||
"any text" nil file-notify--test-tmpfile nil 'no-message)
|
||||
(file-notify--test-read-event)
|
||||
(copy-file file-notify--test-tmpfile file-notify--test-tmpfile1)
|
||||
;; The next two events shall not be visible.
|
||||
(file-notify--test-read-event)
|
||||
(set-file-modes file-notify--test-tmpfile 000)
|
||||
(file-notify--test-read-event)
|
||||
(set-file-times file-notify--test-tmpfile '(0 0))
|
||||
(file-notify--test-read-event)
|
||||
(delete-directory file-notify--test-tmpdir 'recursive))
|
||||
(file-notify-rm-watch file-notify--test-desc)
|
||||
|
||||
;; The environment shall be cleaned up.
|
||||
(file-notify--test-cleanup-p))
|
||||
|
||||
;; Cleanup.
|
||||
(file-notify--test-cleanup))
|
||||
|
||||
(unwind-protect
|
||||
;; Check rename of files inside a directory.
|
||||
(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-tmpfile1 (file-notify--test-make-temp-name)
|
||||
file-notify--test-desc
|
||||
(file-notify-add-watch
|
||||
file-notify--test-tmpdir
|
||||
'(change) #'file-notify--test-event-handler)))
|
||||
(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 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
|
||||
;; of a `renamed' event.
|
||||
((eq system-type 'cygwin)
|
||||
'(created created deleted deleted stopped))
|
||||
((string-equal (file-notify--test-library) "kqueue")
|
||||
'(created changed renamed deleted stopped))
|
||||
(t '(created changed renamed deleted deleted stopped)))
|
||||
(write-region
|
||||
"any text" nil file-notify--test-tmpfile nil 'no-message)
|
||||
(file-notify--test-read-event)
|
||||
(rename-file file-notify--test-tmpfile file-notify--test-tmpfile1)
|
||||
;; After the rename, we won't get events anymore.
|
||||
(file-notify--test-read-event)
|
||||
(delete-directory file-notify--test-tmpdir 'recursive))
|
||||
(file-notify-rm-watch file-notify--test-desc)
|
||||
|
||||
;; The environment shall be cleaned up.
|
||||
(file-notify--test-cleanup-p))
|
||||
|
||||
;; Cleanup.
|
||||
(file-notify--test-cleanup))
|
||||
|
||||
(unwind-protect
|
||||
;; Check attribute change. Does not work for cygwin.
|
||||
(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)
|
||||
(should
|
||||
(setq file-notify--test-desc
|
||||
(file-notify-add-watch
|
||||
file-notify--test-tmpfile
|
||||
'(attribute-change) #'file-notify--test-event-handler)))
|
||||
(file-notify--test-with-events
|
||||
(cond
|
||||
;; w32notify does not distinguish between `changed' and
|
||||
;; `attribute-changed'. Under MS Windows 7, we get four
|
||||
;; `changed' events, and under MS Windows 10 just two.
|
||||
;; Strange.
|
||||
((string-equal (file-notify--test-library) "w32notify")
|
||||
'((changed changed)
|
||||
(changed changed changed changed)))
|
||||
;; For kqueue and in the remote case, `write-region'
|
||||
;; raises also an `attribute-changed' event.
|
||||
((or (string-equal (file-notify--test-library) "kqueue")
|
||||
(file-remote-p temporary-file-directory))
|
||||
'(attribute-changed attribute-changed attribute-changed))
|
||||
(t '(attribute-changed attribute-changed)))
|
||||
(write-region
|
||||
"any text" nil file-notify--test-tmpfile nil 'no-message)
|
||||
(file-notify--test-read-event)
|
||||
(set-file-modes file-notify--test-tmpfile 000)
|
||||
(file-notify--test-read-event)
|
||||
(set-file-times file-notify--test-tmpfile '(0 0))
|
||||
(file-notify--test-read-event)
|
||||
(delete-file file-notify--test-tmpfile))
|
||||
(file-notify-rm-watch file-notify--test-desc)
|
||||
|
||||
;; The environment shall be cleaned up.
|
||||
(file-notify--test-cleanup-p))
|
||||
@ -1013,7 +1048,7 @@ delivered."
|
||||
(file-notify--test-timeout)
|
||||
(not (file-notify-valid-p file-notify--test-desc)))
|
||||
(should-not (file-notify-valid-p file-notify--test-desc))
|
||||
(delete-directory file-notify--test-tmpfile t)
|
||||
(delete-directory file-notify--test-tmpfile 'recursive)
|
||||
|
||||
;; The environment shall be cleaned up.
|
||||
(file-notify--test-cleanup-p))
|
||||
@ -1033,7 +1068,7 @@ delivered."
|
||||
(should (file-notify-valid-p file-notify--test-desc))
|
||||
;; After deleting the directory, the descriptor must not be
|
||||
;; valid anymore.
|
||||
(delete-directory file-notify--test-tmpfile t)
|
||||
(delete-directory file-notify--test-tmpfile 'recursive)
|
||||
(file-notify--wait-for-events
|
||||
(file-notify--test-timeout)
|
||||
(not (file-notify-valid-p file-notify--test-desc)))
|
||||
|
Loading…
Reference in New Issue
Block a user