[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] master 716b468: Extend `file-notify-test02-rm-watch'
From: |
Michael Albinus |
Subject: |
[Emacs-diffs] master 716b468: Extend `file-notify-test02-rm-watch' |
Date: |
Wed, 22 Mar 2017 09:16:11 -0400 (EDT) |
branch: master
commit 716b46848989bc343797d98488a7a0cc33ed3179
Author: Michael Albinus <address@hidden>
Commit: Michael Albinus <address@hidden>
Extend `file-notify-test02-rm-watch'
* test/lisp/filenotify-tests.el (file-notify-test02-rm-watch):
Expect it failed for inotify. Divide tests into different
`unwind-protect' clauses. Check, that removing watch
descriptors out of order do not harm. (Bug#26126)
---
test/lisp/filenotify-tests.el | 55 +++++++++++++++++++++++++++++++++++++++----
1 file changed, 51 insertions(+), 4 deletions(-)
diff --git a/test/lisp/filenotify-tests.el b/test/lisp/filenotify-tests.el
index 7208032..654e1af 100644
--- a/test/lisp/filenotify-tests.el
+++ b/test/lisp/filenotify-tests.el
@@ -340,20 +340,24 @@ This returns only for the local case and gfilenotify;
otherwise it is nil.
(expand-file-name
(make-temp-name "file-notify-test") temporary-file-directory))
-;; This test is inspired by Bug#26127.
+;; This test is inspired by Bug#26126 and Bug#26127.
(ert-deftest file-notify-test02-rm-watch ()
"Check `file-notify-rm-watch'."
+ ;; There is a problem with inotify removing watch descriptors out of
+ ;; order. Temporarily, we expect to fail this test until it is
+ ;; fixed.
+ :expected-result
+ (if (string-equal (file-notify--test-library) "inotify") :failed :passed)
(skip-unless (file-notify--test-local-enabled))
(unwind-protect
+ ;; Check, that `file-notify-rm-watch' works.
(progn
- ;; Check, that `file-notify-rm-watch' works.
(should
(setq file-notify--test-desc
(file-notify-add-watch
temporary-file-directory '(change) #'ignore)))
(file-notify-rm-watch file-notify--test-desc)
-
;; Check, that any parameter is accepted.
(condition-case err
(progn
@@ -363,7 +367,15 @@ This returns only for the local case and gfilenotify;
otherwise it is nil.
(file-notify-rm-watch 'foo))
(error (ert-fail err)))
- ;; Check, that no error is returned removing a watch descriptor twice.
+ ;; The environment shall be cleaned up.
+ (file-notify--test-cleanup-p))
+
+ ;; Cleanup.
+ (file-notify--test-cleanup))
+
+ (unwind-protect
+ ;; Check, that no error is returned removing a watch descriptor twice.
+ (progn
(setq file-notify--test-tmpfile (file-notify--test-make-temp-name)
file-notify--test-tmpfile1 (file-notify--test-make-temp-name))
(should
@@ -374,6 +386,7 @@ This returns only for the local case and gfilenotify;
otherwise it is nil.
(setq file-notify--test-desc1
(file-notify-add-watch
file-notify--test-tmpfile1 '(change) #'ignore)))
+ ;; Remove `file-notify--test-desc' twice.
(file-notify-rm-watch file-notify--test-desc)
(file-notify-rm-watch file-notify--test-desc)
(file-notify-rm-watch file-notify--test-desc1)
@@ -382,6 +395,40 @@ This returns only for the local case and gfilenotify;
otherwise it is nil.
(file-notify--test-cleanup-p))
;; Cleanup.
+ (file-notify--test-cleanup))
+
+ (unwind-protect
+ ;; Check, that removing watch descriptors out of order do not harm.
+ (let (results)
+ (cl-flet ((first-callback (event)
+ (when (eq (nth 1 event) 'deleted) (push 1 results)))
+ (second-callback (event)
+ (when (eq (nth 1 event) 'deleted) (push 2 results))))
+ (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
+ '(change) #'first-callback)))
+ (should
+ (setq file-notify--test-desc1
+ (file-notify-add-watch
+ file-notify--test-tmpfile
+ '(change) #'second-callback)))
+ ;; Remove first watch.
+ (file-notify-rm-watch file-notify--test-desc)
+ ;; Only the second callback shall run.
+ (delete-file file-notify--test-tmpfile)
+ (file-notify--wait-for-events
+ (file-notify--test-timeout) results)
+ (should (equal results (list 2)))
+
+ ;; The environment shall be cleaned up.
+ (file-notify--test-cleanup-p)))
+
+ ;; Cleanup.
(file-notify--test-cleanup)))
(file-notify--deftest-remote file-notify-test02-rm-watch
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Emacs-diffs] master 716b468: Extend `file-notify-test02-rm-watch',
Michael Albinus <=