GNU bug report logs -
#21435
25.0.50; file-notify has problems after renames
Previous Next
Reported by: Tassilo Horn <tsdh <at> gnu.org>
Date: Tue, 8 Sep 2015 08:48:01 UTC
Severity: normal
Found in version 25.0.50
Done: Michael Albinus <michael.albinus <at> gmx.de>
Bug is archived. No further changes may be made.
Full log
View this message in rfc822 format
Tassilo Horn <tsdh <at> gnu.org> writes:
>>> 1. Now `file-notify-test02-events-remote' fails because after every
>>> expected `changed' event an additional `attribute-changed' event is
>>> received. This is wrong because when adding the watch, only
>>> '(change) is given as FLAGS argument, not '(change
>>> attribute-change).
>>
>> I'll contact the Tramp maintainer about :-)
>
> Deliver him my best wishes. :-)
Done. He's working on the problem.
> Ah, ok, so when you write to a file you'll only get a `changed' event,
> and not an additional `attribute-changed' event for the changed
> modification time. So basically, attribute changes are subsumed by
> `changed' and `created' events.
>
> By the way, I think it could be hard to test `attribute-changed' events
> because those probably depend on the filesystem and mount options on the
> machine where the tests are run, e.g., if access time recording is
> enabled or not.
Yes. And I also expect here the most notable differences between the
native libraries. Not checked yet, 'tho.
> I've added a new macro to the tests now which lets you do things this
> way:
>
> ;; Check creation, change, and deletion.
> (file-notify--test-with-events
> 3 3 (lambda (events)
> (should (equal '(created changed deleted)
> (mapcar #'cadr events))))
> (write-region
> "any text" nil file-notify--test-tmpfile nil 'no-message)
> (delete-file file-notify--test-tmpfile))
>
> This means we're waiting for 3 events for at most 3 seconds, and then
> apply the lambda to the received events. The rest is the code which
> causes the events to be emitted.
That's good, yes. Please add a docstring to that macro (boring, I know,
but it will help other people like Eli and me).
One point: you don't call any longer `read-event'. I believe it still
makes sense; IIRC I did it because sometimes you must trigger Emacs to
check all its file descriptors for new events.
> Another thing: the remote tests, especially the test03-autorevert one,
> take really, really long (maybe 30 seconds). I saw that this uses some
> mock TRAMP method which suggests it is a mockup connection which can
> probably simulate a fast or a slow connection. If so, I'd prefer to
> have a reasonably fast one so that I don't try to avoid running all
> tests frequently.
Well, the mockup method is a silly one and it even doesn't require a
remote connection, so it shall be faster than any other Tramp method.
And I do not experience serious delays when testing.
You could alway skip all the remote tests. Call
# env REMOTE_TEMPORARY_FILE_DIRECTORY=/dev/null make -C test/automated file-notify-tests
> Bye,
> Tassilo
Best regards, Michael.
This bug report was last modified 9 years and 308 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.