* bug#25539: 26.0.50; filenotify-tests.el fails on Windows (32 and 64 bits)
@ 2017-01-26 0:03 Juanma Barranquero
2017-01-26 16:33 ` Eli Zaretskii
0 siblings, 1 reply; 5+ messages in thread
From: Juanma Barranquero @ 2017-01-26 0:03 UTC (permalink / raw)
To: 25539
[-- Attachment #1: Type: text/plain, Size: 8355 bytes --]
trunk@C:\...\test> mmake -s lisp/filenotify-tests
Testing lisp/filenotify-tests.el
Running 20 tests (2017-01-26 00:36:36+0100)
Library: `w32notify'
passed 1/20 file-notify-test00-availability
skipped 2/20 file-notify-test00-availability-remote
passed 3/20 file-notify-test01-add-watch
skipped 4/20 file-notify-test01-add-watch-remote
passed 5/20 file-notify-test02-events
skipped 6/20 file-notify-test02-events-remote
Reverting buffer `file-notify-test5408q2D'.
Reverting buffer `file-notify-test5408q2D'.
passed 7/20 file-notify-test03-autorevert
skipped 8/20 file-notify-test03-autorevert-remote
Test file-notify-test04-file-validity backtrace:
(if (unwind-protect (setq value-4 (apply fn-2 args-3)) (setq form-de
(let (form-description-6) (if (unwind-protect (setq value-4 (apply f
(let ((value-4 (quote ert-form-evaluation-aborted-5))) (let (form-de
(let ((fn-2 (function file-notify--test-no-descriptors)) (args-3 (li
file-notify--test-cleanup-p()
(let ((temporary-file-directory (make-temp-file "file-notify-test-pa
(unwind-protect (let ((temporary-file-directory (make-temp-file "fil
(closure (t) nil (let ((fn-194 (function file-notify--test-local-ena
ert--run-test-internal([cl-struct-ert--test-execution-info [cl-struc
ert-run-test([cl-struct-ert-test file-notify-test04-file-validity "C
ert-run-or-rerun-test([cl-struct-ert--stats t [[cl-struct-ert-test f
ert-run-tests(t #[385 "\306 \307\"\203G \211\211G\310U\203 \211@\20
ert-run-tests-batch(nil)
ert-run-tests-batch-and-exit(nil)
eval((ert-run-tests-batch-and-exit nil))
command-line-1(("-L" ";." "-l" "ert" "-l" "lisp/filenotify-tests.el"
command-line()
normal-top-level()
Test file-notify-test04-file-validity condition:
(ert-test-failed
((should
(file-notify--test-no-descriptors))
:form
(file-notify--test-no-descriptors)
:value nil :explanation
("Watch descriptor(s) existent:"
(38542300
"c:/Users/Juanma/AppData/Local/Temp/file-notify-test-parent5408RVW"
(nil . file-notify--test-event-handler)))))
FAILED 9/20 file-notify-test04-file-validity
skipped 10/20 file-notify-test04-file-validity-remote
Test file-notify-test05-dir-validity backtrace:
(if (unwind-protect (setq value-4 (apply fn-2 args-3)) (setq form-de
(let (form-description-6) (if (unwind-protect (setq value-4 (apply f
(let ((value-4 (quote ert-form-evaluation-aborted-5))) (let (form-de
(let ((fn-2 (function file-notify--test-no-descriptors)) (args-3 (li
file-notify--test-cleanup-p()
(progn (let ((value-269 (cl-gensym "ert-form-evaluation-aborted-")))
(unwind-protect (progn (let ((value-269 (cl-gensym "ert-form-evaluat
(closure (t) nil (let ((fn-250 (function file-notify--test-local-ena
ert--run-test-internal([cl-struct-ert--test-execution-info [cl-struc
ert-run-test([cl-struct-ert-test file-notify-test05-dir-validity "Ch
ert-run-or-rerun-test([cl-struct-ert--stats t [[cl-struct-ert-test f
ert-run-tests(t #[385 "\306 \307\"\203G \211\211G\310U\203 \211@\20
ert-run-tests-batch(nil)
ert-run-tests-batch-and-exit(nil)
eval((ert-run-tests-batch-and-exit nil))
command-line-1(("-L" ";." "-l" "ert" "-l" "lisp/filenotify-tests.el"
command-line()
normal-top-level()
Test file-notify-test05-dir-validity condition:
(ert-test-failed
((should
(file-notify--test-no-descriptors))
:form
(file-notify--test-no-descriptors)
:value nil :explanation
("Watch descriptor(s) existent:"
(38542240
"c:/Users/Juanma/AppData/Local/Temp/file-notify-test-parent54084zo"
(nil . ignore)))))
FAILED 11/20 file-notify-test05-dir-validity
skipped 12/20 file-notify-test05-dir-validity-remote
Test file-notify-test06-many-events backtrace:
(if (unwind-protect (setq value-4 (apply fn-2 args-3)) (setq form-de
(let (form-description-6) (if (unwind-protect (setq value-4 (apply f
(let ((value-4 (quote ert-form-evaluation-aborted-5))) (let (form-de
(let ((fn-2 (function file-notify--test-no-descriptors)) (args-3 (li
file-notify--test-cleanup-p()
(let ((n 1000) source-file-list target-file-list (default-directory
(unwind-protect (let ((n 1000) source-file-list target-file-list (de
(closure (t) nil (let ((fn-288 (function file-notify--test-local-ena
ert--run-test-internal([cl-struct-ert--test-execution-info [cl-struc
ert-run-test([cl-struct-ert-test file-notify-test06-many-events "Che
ert-run-or-rerun-test([cl-struct-ert--stats t [[cl-struct-ert-test f
ert-run-tests(t #[385 "\306 \307\"\203G \211\211G\310U\203 \211@\20
ert-run-tests-batch(nil)
ert-run-tests-batch-and-exit(nil)
eval((ert-run-tests-batch-and-exit nil))
command-line-1(("-L" ";." "-l" "ert" "-l" "lisp/filenotify-tests.el"
command-line()
normal-top-level()
Test file-notify-test06-many-events condition:
(ert-test-failed
((should
(file-notify--test-no-descriptors))
:form
(file-notify--test-no-descriptors)
:value nil :explanation
("Watch descriptor(s) existent:"
(38542336
"c:/Users/Juanma/AppData/Local/Temp/file-notify-test-parent5408F-u"
(nil . file-notify--test-event-handler)))))
FAILED 13/20 file-notify-test06-many-events
skipped 14/20 file-notify-test06-many-events-remote
passed 15/20 file-notify-test07-backup
skipped 16/20 file-notify-test07-backup-remote
Test file-notify-test08-watched-file-in-watched-dir backtrace:
(if (unwind-protect (setq value-4 (apply fn-2 args-3)) (setq form-de
(let (form-description-6) (if (unwind-protect (setq value-4 (apply f
(let ((value-4 (quote ert-form-evaluation-aborted-5))) (let (form-de
(let ((fn-2 (function file-notify--test-no-descriptors)) (args-3 (li
file-notify--test-cleanup-p()
(progn (let ((value-370 (cl-gensym "ert-form-evaluation-aborted-")))
(let* ((--cl-dir-callback-- (function (lambda (event) (let ((file-no
(unwind-protect (let* ((--cl-dir-callback-- (function (lambda (event
(closure (t) nil (let ((fn-361 (function file-notify--test-local-ena
ert--run-test-internal([cl-struct-ert--test-execution-info [cl-struc
ert-run-test([cl-struct-ert-test file-notify-test08-watched-file-in-
ert-run-or-rerun-test([cl-struct-ert--stats t [[cl-struct-ert-test f
ert-run-tests(t #[385 "\306 \307\"\203G \211\211G\310U\203 \211@\20
ert-run-tests-batch(nil)
ert-run-tests-batch-and-exit(nil)
eval((ert-run-tests-batch-and-exit nil))
command-line-1(("-L" ";." "-l" "ert" "-l" "lisp/filenotify-tests.el"
command-line()
normal-top-level()
Test file-notify-test08-watched-file-in-watched-dir condition:
(ert-test-failed
((should
(file-notify--test-no-descriptors))
:form
(file-notify--test-no-descriptors)
:value nil :explanation
("Watch descriptor(s) existent:"
(38542360
"c:/Users/Juanma/AppData/Local/Temp/file-notify-test-parent5408RcK"
(nil closure ... ... ...)))))
FAILED 17/20 file-notify-test08-watched-file-in-watched-dir
skipped 18/20 file-notify-test08-watched-file-in-watched-dir-remote
skipped 19/20 file-notify-test09-sufficient-resources
skipped 20/20 file-notify-test09-sufficient-resources-remote
Ran 20 tests, 5 results as expected, 4 unexpected, 11 skipped (2017-01-26
00:38:10+0100)
4 unexpected results:
FAILED file-notify-test04-file-validity
FAILED file-notify-test05-dir-validity
FAILED file-notify-test06-many-events
FAILED file-notify-test08-watched-file-in-watched-dir
11 skipped results:
SKIPPED file-notify-test00-availability-remote
SKIPPED file-notify-test01-add-watch-remote
SKIPPED file-notify-test02-events-remote
SKIPPED file-notify-test03-autorevert-remote
SKIPPED file-notify-test04-file-validity-remote
SKIPPED file-notify-test05-dir-validity-remote
SKIPPED file-notify-test06-many-events-remote
SKIPPED file-notify-test07-backup-remote
SKIPPED file-notify-test08-watched-file-in-watched-dir-remote
SKIPPED file-notify-test09-sufficient-resources
SKIPPED file-notify-test09-sufficient-resources-remote
Makefile:115: recipe for target `lisp/filenotify-tests.log' failed
make[1]: *** [lisp/filenotify-tests.log] Error 1
Makefile:152: recipe for target `lisp/filenotify-tests' failed
make: *** [lisp/filenotify-tests] Error 2
[-- Attachment #2: Type: text/html, Size: 10874 bytes --]
^ permalink raw reply [flat|nested] 5+ messages in thread
* bug#25539: 26.0.50; filenotify-tests.el fails on Windows (32 and 64 bits)
2017-01-26 0:03 bug#25539: 26.0.50; filenotify-tests.el fails on Windows (32 and 64 bits) Juanma Barranquero
@ 2017-01-26 16:33 ` Eli Zaretskii
2017-01-27 7:54 ` Michael Albinus
0 siblings, 1 reply; 5+ messages in thread
From: Eli Zaretskii @ 2017-01-26 16:33 UTC (permalink / raw)
To: Juanma Barranquero, Michael Albinus; +Cc: 25539
> From: Juanma Barranquero <lekktu@gmail.com>
> Date: Thu, 26 Jan 2017 01:03:09 +0100
>
> 4 unexpected results:
> FAILED file-notify-test04-file-validity
> FAILED file-notify-test05-dir-validity
> FAILED file-notify-test06-many-events
> FAILED file-notify-test08-watched-file-in-watched-dir
The problem is in file-notify--test-cleanup-p, and it happens only
when the parent directory of the file(s) being watched is deleted.
The root cause is that file-notify--test-cleanup-p expects the
notification descriptor(s) to be deleted from the hash table
maintained internally by filenotify.el, when the above happens. But
that doesn't work on Windows, where deleting the parent directory
simply causes an error whose result is that the thread which watches
the filesystem changes exits abnormally, but the event is not
reported. So in those cases the descriptor is not removed from the
hash table.
The changes below make the tests succeed, but maybe the above means we
need to augment the w32notify implementation to clean up better in
this case. Michael?
diff --git a/test/lisp/filenotify-tests.el b/test/lisp/filenotify-tests.el
index d237d0c..5d31251 100644
--- a/test/lisp/filenotify-tests.el
+++ b/test/lisp/filenotify-tests.el
@@ -850,6 +850,8 @@ file-notify--test-with-events
;; After deleting the parent directory, the descriptor must
;; not be valid anymore.
(should-not (file-notify-valid-p file-notify--test-desc))
+ (if (eq system-type 'windows-nt)
+ (file-notify--rm-descriptor file-notify--test-desc))
;; The environment shall be cleaned up.
(file-notify--test-cleanup-p))
@@ -906,6 +908,8 @@ file-notify--test-with-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 (eq system-type 'windows-nt)
+ (file-notify--rm-descriptor file-notify--test-desc))
;; The environment shall be cleaned up.
(file-notify--test-cleanup-p))
@@ -975,6 +979,8 @@ file-notify--test-with-events
(file-notify--test-read-event)
(delete-file file)))
(delete-directory file-notify--test-tmpfile)
+ (if (eq system-type 'windows-nt)
+ (file-notify--rm-descriptor file-notify--test-desc))
;; The environment shall be cleaned up.
(file-notify--test-cleanup-p))
@@ -1184,6 +1190,9 @@ file-notify--test-with-events
(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 (eq system-type 'windows-nt)
+ (file-notify--rm-descriptor file-notify--test-desc1)
+ (file-notify--rm-descriptor file-notify--test-desc2))
;; The environment shall be cleaned up.
(file-notify--test-cleanup-p))
^ permalink raw reply related [flat|nested] 5+ messages in thread
* bug#25539: 26.0.50; filenotify-tests.el fails on Windows (32 and 64 bits)
2017-01-26 16:33 ` Eli Zaretskii
@ 2017-01-27 7:54 ` Michael Albinus
2017-01-27 8:31 ` Eli Zaretskii
0 siblings, 1 reply; 5+ messages in thread
From: Michael Albinus @ 2017-01-27 7:54 UTC (permalink / raw)
To: Eli Zaretskii; +Cc: Juanma Barranquero, 25539
Eli Zaretskii <eliz@gnu.org> writes:
Hi Eli,
>> 4 unexpected results:
>> FAILED file-notify-test04-file-validity
>> FAILED file-notify-test05-dir-validity
>> FAILED file-notify-test06-many-events
>> FAILED file-notify-test08-watched-file-in-watched-dir
>
> The problem is in file-notify--test-cleanup-p, and it happens only
> when the parent directory of the file(s) being watched is deleted.
>
> The root cause is that file-notify--test-cleanup-p expects the
> notification descriptor(s) to be deleted from the hash table
> maintained internally by filenotify.el, when the above happens. But
> that doesn't work on Windows, where deleting the parent directory
> simply causes an error whose result is that the thread which watches
> the filesystem changes exits abnormally, but the event is not
> reported. So in those cases the descriptor is not removed from the
> hash table.
>
> The changes below make the tests succeed, but maybe the above means we
> need to augment the w32notify implementation to clean up better in
> this case. Michael?
Yes, catching the error somehow in w32notify (don't know how) and fire
up a `stopped' event is preferrable. I let it to you, whether this could
be implemented.
If this is not possible, maybe we shall call
`file-notify--rm-descriptor' in `file-notify-valid-p', when we detect
that the descriptor is not valid anymore, but it still exists.
> @@ -850,6 +850,8 @@ file-notify--test-with-events
> ;; After deleting the parent directory, the descriptor must
> ;; not be valid anymore.
> (should-not (file-notify-valid-p file-notify--test-desc))
> + (if (eq system-type 'windows-nt)
> + (file-notify--rm-descriptor file-notify--test-desc))
It would be OK for me also to apply this patch. The test shall be
(if (string-equal (file-notify--test-library) "w32notify")
Otherwise, we would catch also the remote case when running the test on
MS Windows. And a respective comment might serve why we apply this.
Best regards, Michael.
^ permalink raw reply [flat|nested] 5+ messages in thread
* bug#25539: 26.0.50; filenotify-tests.el fails on Windows (32 and 64 bits)
2017-01-27 7:54 ` Michael Albinus
@ 2017-01-27 8:31 ` Eli Zaretskii
2019-10-01 22:03 ` Juanma Barranquero
0 siblings, 1 reply; 5+ messages in thread
From: Eli Zaretskii @ 2017-01-27 8:31 UTC (permalink / raw)
To: Michael Albinus; +Cc: lekktu, 25539
> From: Michael Albinus <michael.albinus@gmx.de>
> Cc: Juanma Barranquero <lekktu@gmail.com>, 25539@debbugs.gnu.org
> Date: Fri, 27 Jan 2017 08:54:42 +0100
>
> > The root cause is that file-notify--test-cleanup-p expects the
> > notification descriptor(s) to be deleted from the hash table
> > maintained internally by filenotify.el, when the above happens. But
> > that doesn't work on Windows, where deleting the parent directory
> > simply causes an error whose result is that the thread which watches
> > the filesystem changes exits abnormally, but the event is not
> > reported. So in those cases the descriptor is not removed from the
> > hash table.
> >
> > The changes below make the tests succeed, but maybe the above means we
> > need to augment the w32notify implementation to clean up better in
> > this case. Michael?
>
> Yes, catching the error somehow in w32notify (don't know how) and fire
> up a `stopped' event is preferrable. I let it to you, whether this could
> be implemented.
I'll leave this bug open, although the test suite now passes. I think
I see a way of generating 'stopped', but I'll need to test that (and
it will need more changes in filenotify.el and in the tests).
> If this is not possible, maybe we shall call
> `file-notify--rm-descriptor' in `file-notify-valid-p', when we detect
> that the descriptor is not valid anymore, but it still exists.
I don't see how this is possible, as file-notify-valid-p doesn't know
which descriptors are supposed to be removed. And it will paper over
the real problem, so I'd prefer not to do that.
> > @@ -850,6 +850,8 @@ file-notify--test-with-events
> > ;; After deleting the parent directory, the descriptor must
> > ;; not be valid anymore.
> > (should-not (file-notify-valid-p file-notify--test-desc))
> > + (if (eq system-type 'windows-nt)
> > + (file-notify--rm-descriptor file-notify--test-desc))
>
> It would be OK for me also to apply this patch. The test shall be
>
> (if (string-equal (file-notify--test-library) "w32notify")
>
> Otherwise, we would catch also the remote case when running the test on
> MS Windows. And a respective comment might serve why we apply this.
Done, thanks.
^ permalink raw reply [flat|nested] 5+ messages in thread
* bug#25539: 26.0.50; filenotify-tests.el fails on Windows (32 and 64 bits)
2017-01-27 8:31 ` Eli Zaretskii
@ 2019-10-01 22:03 ` Juanma Barranquero
0 siblings, 0 replies; 5+ messages in thread
From: Juanma Barranquero @ 2019-10-01 22:03 UTC (permalink / raw)
To: Eli Zaretskii; +Cc: Michael Albinus, 25539-done
[-- Attachment #1: Type: text/plain, Size: 171 bytes --]
On Fri, Jan 27, 2017 at 9:32 AM Eli Zaretskii <eliz@gnu.org> wrote:
> Done, thanks.
This was marked as Done in 26.1 and it doesn't happen on 27.0.50, so I'm
closing it.
[-- Attachment #2: Type: text/html, Size: 304 bytes --]
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2019-10-01 22:03 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-01-26 0:03 bug#25539: 26.0.50; filenotify-tests.el fails on Windows (32 and 64 bits) Juanma Barranquero
2017-01-26 16:33 ` Eli Zaretskii
2017-01-27 7:54 ` Michael Albinus
2017-01-27 8:31 ` Eli Zaretskii
2019-10-01 22:03 ` Juanma Barranquero
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.