[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] master eff2375: Improve filenotify-tests.el on Cygwin (Bug
From: |
Ken Brown |
Subject: |
[Emacs-diffs] master eff2375: Improve filenotify-tests.el on Cygwin (Bug #21804) |
Date: |
Tue, 27 Dec 2016 13:38:25 +0000 (UTC) |
branch: master
commit eff237503c321dd96e6bd509a5e34a9f1f6c75d9
Author: Ken Brown <address@hidden>
Commit: Ken Brown <address@hidden>
Improve filenotify-tests.el on Cygwin (Bug #21804)
* test/lisp/filenotify-tests.el [CYGWIN]
(file-notify--test-read-event-timeout): Increase.
(file-notify--test-with-events): Add delay before executing body.
(file-notify-test02-events, file-notify-test04-file-validity):
Adjust expected results.
---
test/lisp/filenotify-tests.el | 78 ++++++++++++++++++++---------------------
1 file changed, 39 insertions(+), 39 deletions(-)
diff --git a/test/lisp/filenotify-tests.el b/test/lisp/filenotify-tests.el
index 0e6e58e..1ed764f 100644
--- a/test/lisp/filenotify-tests.el
+++ b/test/lisp/filenotify-tests.el
@@ -64,7 +64,11 @@
(defvar file-notify--test-event nil)
(defvar file-notify--test-events nil)
-(defconst file-notify--test-read-event-timeout 0.01
+(defconst file-notify--test-read-event-timeout
+ (cond
+ ;; Some events take several seconds to arrive on cygwin.
+ ((eq system-type 'cygwin) 7)
+ (t 0.01))
"Timeout for `read-event' calls.
It is different for local and remote file notification libraries.")
@@ -388,6 +392,10 @@ delivered."
(not (input-pending-p)))
(setq file-notify--test-events nil
file-notify--test-results nil)
+ ;; cygwin needs a delay between setting a watch and beginning
+ ;; file activity, or else the first event is not sent.
+ (if (eq system-type 'cygwin)
+ (sleep-for 1))
,@body
(file-notify--wait-for-events
;; More events need more time. Use some fudge factor.
@@ -409,10 +417,9 @@ delivered."
(unwind-protect
(progn
;; Check file creation, change and deletion. It doesn't work
- ;; for cygwin and kqueue, because we don't use an implicit
- ;; directory monitor (kqueue), or the timings are too bad (cygwin).
- (unless (or (eq system-type 'cygwin)
- (string-equal (file-notify--test-library) "kqueue"))
+ ;; 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
@@ -421,9 +428,9 @@ delivered."
'(change) #'file-notify--test-event-handler)))
(file-notify--test-with-events
(cond
- ;; cygwin recognizes only `deleted' and `stopped' events.
+ ;; cygwin does not raise a `changed' event.
((eq system-type 'cygwin)
- '(deleted stopped))
+ '(created deleted stopped))
(t '(created changed deleted stopped)))
(write-region
"another text" nil file-notify--test-tmpfile nil 'no-message)
@@ -440,13 +447,9 @@ delivered."
file-notify--test-tmpfile
'(change) #'file-notify--test-event-handler)))
(file-notify--test-with-events
- (cond
- ;; cygwin recognizes only `deleted' and `stopped' events.
- ((eq system-type 'cygwin)
- '(deleted stopped))
- ;; There could be one or two `changed' events.
- (t '((changed deleted stopped)
- (changed changed deleted stopped))))
+ ;; There could be one or two `changed' events.
+ '((changed deleted stopped)
+ (changed changed deleted stopped))
(write-region
"another text" nil file-notify--test-tmpfile nil 'no-message)
(read-event nil nil file-notify--test-read-event-timeout)
@@ -470,11 +473,11 @@ delivered."
;; events for the watched directory.
((string-equal (file-notify--test-library) "w32notify")
'(created changed deleted))
- ;; cygwin recognizes only `deleted' and `stopped' events.
- ((eq system-type 'cygwin)
- '(deleted stopped))
;; There are two `deleted' events, for the file and for
- ;; the directory. Except for kqueue.
+ ;; 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)))
@@ -503,11 +506,10 @@ delivered."
'(created changed created changed
changed changed changed
deleted deleted))
- ;; cygwin recognizes only `deleted' and `stopped' events.
- ((eq system-type 'cygwin)
- '(deleted stopped))
;; There are three `deleted' events, for two files and
- ;; for the directory. Except for kqueue.
+ ;; 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
@@ -541,11 +543,12 @@ delivered."
;; events for the watched directory.
((string-equal (file-notify--test-library) "w32notify")
'(created changed renamed deleted))
- ;; cygwin recognizes only `deleted' and `stopped' events.
- ((eq system-type 'cygwin)
- '(deleted stopped))
;; There are two `deleted' events, for the file and for
- ;; the directory. Except for kqueue.
+ ;; 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)))
@@ -728,13 +731,9 @@ delivered."
'(change) #'file-notify--test-event-handler)))
(should (file-notify-valid-p file-notify--test-desc))
(file-notify--test-with-events
- (cond
- ;; cygwin recognizes only `deleted' and `stopped' events.
- ((eq system-type 'cygwin)
- '(deleted stopped))
;; There could be one or two `changed' events.
- (t '((changed deleted stopped)
- (changed changed deleted stopped))))
+ '((changed deleted stopped)
+ (changed changed deleted stopped))
(write-region
"another text" nil file-notify--test-tmpfile nil 'no-message)
(read-event nil nil file-notify--test-read-event-timeout)
@@ -765,11 +764,11 @@ delivered."
;; for the watched directory.
((string-equal (file-notify--test-library) "w32notify")
'(created changed deleted))
- ;; cygwin recognizes only `deleted' and `stopped' events.
- ((eq system-type 'cygwin)
- '(deleted stopped))
;; There are two `deleted' events, for the file and for the
- ;; directory. Except for kqueue.
+ ;; 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)))
@@ -1172,9 +1171,10 @@ the file watch."
;; the missing directory monitor.
;; * For w32notify, no `deleted' and `stopped' events arrive when a
;; directory is removed.
-;; * For w32notify, no `attribute-changed' events arrive. Its sends
-;; `changed' events instead.
-;; * Check, why cygwin recognizes only `deleted' and `stopped' events.
+;; * For cygwin and w32notify, no `attribute-changed' events arrive.
+;; They send `changed' events instead.
+;; * cygwin does not send all expected `changed' and `deleted' events.
+;; Probably due to timing issues.
(provide 'file-notify-tests)
;;; filenotify-tests.el ends here
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Emacs-diffs] master eff2375: Improve filenotify-tests.el on Cygwin (Bug #21804),
Ken Brown <=