emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] master cfa54ab: Adapt filenotify-tests for emba


From: Michael Albinus
Subject: [Emacs-diffs] master cfa54ab: Adapt filenotify-tests for emba
Date: Sun, 6 Jan 2019 09:43:06 -0500 (EST)

branch: master
commit cfa54ab7d8a64a8a186e29ed2db2cbd58b99c0d9
Author: Michael Albinus <address@hidden>
Commit: Michael Albinus <address@hidden>

    Adapt filenotify-tests for emba
    
    * test/lisp/filenotify-tests.el (file-notify-test03-events)
    (file-notify-test05-file-validity)
    (file-notify-test06-dir-validity)
    (file-notify-test07-many-events)
    (file-notify-test09-watched-file-in-watched-dir): Adapt tests for emba.
---
 lisp/filenotify.el            |  14 +--
 test/lisp/filenotify-tests.el | 192 ++++++++++++++++++++++++------------------
 2 files changed, 118 insertions(+), 88 deletions(-)

diff --git a/lisp/filenotify.el b/lisp/filenotify.el
index f66c8ed..3f9bb96 100644
--- a/lisp/filenotify.el
+++ b/lisp/filenotify.el
@@ -114,7 +114,7 @@ Could be different from the directory watched by the 
backend library."
   (when-let* ((watch (gethash (car event) file-notify-descriptors)))
     (directory-file-name
      (expand-file-name
-      (or  (and (stringp (nth 2 event)) (nth 2 event)) "")
+      (or (and (stringp (nth 2 event)) (nth 2 event)) "")
       (file-notify--watch-directory watch)))))
 
 ;; Only `gfilenotify' could return two file names.
@@ -240,8 +240,10 @@ EVENT is the cadr of the event in 
`file-notify-handle-event'
                             (file-notify--watch-filename watch)
                             (file-name-nondirectory file1)))))
             ;;(message
-            ;;"file-notify-callback %S %S %S %S %S"
-            ;;desc action file file1 watch)
+            ;;"file-notify-callback %S %S %S %S %S %S %S"
+            ;;desc action file file1 watch
+            ;;(file-notify--event-watched-file event)
+            ;;(file-notify--watch-directory watch))
             (funcall (file-notify--watch-callback watch)
                      (if file1
                          `(,desc ,action ,file ,file1)
@@ -419,11 +421,9 @@ DESCRIPTOR should be an object returned by 
`file-notify-add-watch'."
               descriptor))
            t))))
 
-
 ;; TODO:
-;; * Watching a /dir/file may receive events for dir.
-;;   (This may be the desired behavior.)
-;; * Watching a file in an already watched directory
+
+;; * Watching a file in an already watched directory.
 ;;   If the file is created and *then* a watch is added to that file, the
 ;;   watch might receive events which occurred prior to it being created,
 ;;   due to the way events are propagated during idle time.  Note: This
diff --git a/test/lisp/filenotify-tests.el b/test/lisp/filenotify-tests.el
index d4e65af..4be51af 100644
--- a/test/lisp/filenotify-tests.el
+++ b/test/lisp/filenotify-tests.el
@@ -588,7 +588,6 @@ delivered."
 
 (ert-deftest file-notify-test03-events ()
   "Check file creation/change/removal notifications."
-  :tags (if (getenv "EMACS_EMBA_CI") '(:unstable))
   (skip-unless (file-notify--test-local-enabled))
 
   (unwind-protect
@@ -689,6 +688,11 @@ delivered."
              '(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)
@@ -734,6 +738,11 @@ delivered."
              '(created created changed changed deleted stopped))
             ((string-equal (file-notify--test-library) "kqueue")
              '(created changed 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 created changed deleted deleted))
             (t '(created changed created changed
                  deleted deleted deleted stopped)))
          (write-region
@@ -786,6 +795,11 @@ delivered."
              '(created created deleted deleted stopped))
             ((string-equal (file-notify--test-library) "kqueue")
              '(created changed renamed 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 renamed deleted))
             (t '(created changed renamed deleted deleted stopped)))
          (write-region
           "any text" nil file-notify--test-tmpfile nil 'no-message)
@@ -946,7 +960,6 @@ delivered."
 
 (ert-deftest file-notify-test05-file-validity ()
   "Check `file-notify-valid-p' for files."
-  :tags (if (getenv "EMACS_EMBA_CI") '(:unstable))
   (skip-unless (file-notify--test-local-enabled))
 
   (unwind-protect
@@ -1004,62 +1017,66 @@ 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))
-         (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))
+              (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.")
 
 (ert-deftest file-notify-test06-dir-validity ()
   "Check `file-notify-valid-p' for directories."
-  :tags (if (getenv "EMACS_EMBA_CI") '(:unstable))
   (skip-unless (file-notify--test-local-enabled))
 
   (unwind-protect
@@ -1087,39 +1104,42 @@ delivered."
     ;; Cleanup.
     (file-notify--test-cleanup))
 
-  (unwind-protect
-      (progn
-       (should
-        (setq file-notify--test-tmpfile
-              (make-temp-file "file-notify-test-parent" t)))
-       (should
-        (setq file-notify--test-desc
-              (file-notify-add-watch
-               file-notify--test-tmpfile '(change) #'ignore)))
-        (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 'recursive)
-        (file-notify--wait-for-events
-        (file-notify--test-timeout)
-        (not (file-notify-valid-p file-notify--test-desc)))
-        (should-not (file-notify-valid-p file-notify--test-desc))
-        (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
+        (progn
+         (should
+          (setq file-notify--test-tmpfile
+                (make-temp-file "file-notify-test-parent" t)))
+         (should
+          (setq file-notify--test-desc
+                (file-notify-add-watch
+                 file-notify--test-tmpfile '(change) #'ignore)))
+          (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 'recursive)
+          (file-notify--wait-for-events
+          (file-notify--test-timeout)
+          (not (file-notify-valid-p file-notify--test-desc)))
+          (should-not (file-notify-valid-p file-notify--test-desc))
+          (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-test06-dir-validity
   "Check `file-notify-valid-p' via file notification for remote directories.")
 
 (ert-deftest file-notify-test07-many-events ()
   "Check that events are not dropped."
-  :tags (if (getenv "EMACS_EMBA_CI")
-            '(:expensive-test :unstable) '(:expensive-test))
+  :tags '(:expensive-test)
   (skip-unless (file-notify--test-local-enabled))
 
   (should
@@ -1178,7 +1198,9 @@ delivered."
             (file-notify--test-read-event)
             (delete-file file)))
         (delete-directory file-notify--test-tmpfile)
-        (if (string-equal (file-notify--test-library) "w32notify")
+        (if (or (string-equal (file-notify--test-library) "w32notify")
+                (and (string-equal (file-notify--test-library) "inotify")
+                     (getenv "EMACS_EMBA_CI")))
             (file-notify--rm-descriptor file-notify--test-desc))
 
         ;; The environment shall be cleaned up.
@@ -1278,8 +1300,7 @@ descriptors that were issued when registering the 
watches.  This
 test caters for the situation in bug#22736 where the callback for
 the directory received events for the file with the descriptor of
 the file watch."
-  :tags (if (getenv "EMACS_EMBA_CI")
-            '(:expensive-test :unstable) '(:expensive-test))
+  :tags '(:expensive-test)
   (skip-unless (file-notify--test-local-enabled))
 
   ;; A directory to be watched.
@@ -1388,11 +1409,20 @@ the file watch."
                  ;; w32notify does not raise `deleted' and `stopped'
                  ;; events for the watched directory.
                   ((string-equal (file-notify--test-library) "w32notify") '())
+                  ;; 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"))
+                   '())
                   (t '(deleted stopped))))))
           (delete-directory file-notify--test-tmpfile 'recursive))
-        (should-not (file-notify-valid-p file-notify--test-desc1))
-        (should-not (file-notify-valid-p file-notify--test-desc2))
-        (when (string-equal (file-notify--test-library) "w32notify")
+        (unless (and (string-equal (file-notify--test-library) "inotify")
+                     (getenv "EMACS_EMBA_CI"))
+          (should-not (file-notify-valid-p file-notify--test-desc1))
+          (should-not (file-notify-valid-p file-notify--test-desc2)))
+        (when (or (string-equal (file-notify--test-library) "w32notify")
+                  (and (string-equal (file-notify--test-library) "inotify")
+                       (getenv "EMACS_EMBA_CI")))
           (file-notify--rm-descriptor file-notify--test-desc1)
           (file-notify--rm-descriptor file-notify--test-desc2))
 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]