]> git.eshelyaron.com Git - emacs.git/commitdiff
Adapt filenotify-tests for emba
authorMichael Albinus <michael.albinus@gmx.de>
Sun, 6 Jan 2019 14:42:57 +0000 (15:42 +0100)
committerMichael Albinus <michael.albinus@gmx.de>
Sun, 6 Jan 2019 14:42:57 +0000 (15:42 +0100)
* 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
test/lisp/filenotify-tests.el

index f66c8ed429a9c77b7393c6d199c5700b369f5cd8..3f9bb960a9bd1241418b8f81f45f58b2f67e5834 100644 (file)
@@ -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
index d4e65af418693276a36ce024abe09f81fc9ed16d..4be51afb47fe7072d169c60730dcadb342ad8c9c 100644 (file)
@@ -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))