Mercurial > hg
view tests/test-locate.out @ 9116:f90bbf1ea09f
inotify: fix issue1375, add a test.
The biggest problem was the data structure, which did not allow changing
a file into a directory or vice versa. This problem is fixed by b55d44719b47.
The walk() method also had an issue in this case:
- we know 'path' as a directory. inotify server sleeps.
- 'path' is deleted
- 'path' is recreated as a file
- the server catches up here, and see the deletion. it instantiates a scan(),
which in its turn calls for walk(repo, path).
- walk() then assumes that 'path' is a directory and calls os.listdir on it,
which raises an OSError(errno.ENOTDIR)
Catch the error, and yield the file instead of the directory contents.
author | Nicolas Dumazet <nicdumz.commits@gmail.com> |
---|---|
date | Mon, 13 Jul 2009 16:49:05 +0200 |
parents | a5cde03cd019 |
children |
line wrap: on
line source
adding a adding b adding dir.h/foo adding t.h adding t/b adding t/e.h adding t/x hg locate a a locate succeeded hg locate NONEXISTENT locate failed hg locate a b dir.h/foo t.h t/b t/e.h t/x hg locate a hg locate NONEXISTENT hg locate relpath:NONEXISTENT hg locate b dir.h/foo t.h t/b t/e.h t/x hg locate -r 0 a a hg locate -r 0 NONEXISTENT hg locate -r 0 relpath:NONEXISTENT hg locate -r 0 a b dir.h/foo t.h t/b t/e.h t/x % -I/-X with relative path should work hg locate b dir.h/foo t.h t/b t/e.h t/x hg locate -I ../t t/b t/e.h t/x hg locate t/** t/b t/e.h t/x hg locate b ../b ../t/b hg locate *.h ../t.h ../t/e.h hg locate path:t/x ../t/x hg locate re:.*\.h$ ../t.h ../t/e.h hg locate -r 0 b ../b ../t/b hg locate -r 0 *.h ../t.h ../t/e.h hg locate -r 0 path:t/x ../t/x hg locate -r 0 re:.*\.h$ ../t.h ../t/e.h