Mercurial > hg
view tests/test-remove.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 | 6062c6362b2e |
children | 1f665246dab3 |
line wrap: on
line source
% file not managed not removing foo: file is untracked ? foo ./foo 0 files updated, 0 files merged, 0 files removed, 0 files unresolved % 00 state added, options none not removing bar: file has been marked for add (use -f to force removal) A bar ./bar ./foo 0 files updated, 0 files merged, 0 files removed, 0 files unresolved % 01 state clean, options none R foo ? bar ./bar 1 files updated, 0 files merged, 0 files removed, 0 files unresolved % 02 state modified, options none not removing foo: file is modified (use -f to force removal) M foo ? bar ./bar ./foo 1 files updated, 0 files merged, 0 files removed, 0 files unresolved % 03 state missing, options none R foo ? bar ./bar 1 files updated, 0 files merged, 0 files removed, 0 files unresolved % 10 state added, options -f ? bar ./bar ./foo 0 files updated, 0 files merged, 0 files removed, 0 files unresolved % 11 state clean, options -f R foo 1 files updated, 0 files merged, 0 files removed, 0 files unresolved % 12 state modified, options -f R foo 1 files updated, 0 files merged, 0 files removed, 0 files unresolved % 13 state missing, options -f R foo 1 files updated, 0 files merged, 0 files removed, 0 files unresolved % 20 state added, options -A not removing bar: file still exists (use -f to force removal) A bar ./bar ./foo 0 files updated, 0 files merged, 0 files removed, 0 files unresolved % 21 state clean, options -A not removing foo: file still exists (use -f to force removal) ? bar ./bar ./foo 0 files updated, 0 files merged, 0 files removed, 0 files unresolved % 22 state modified, options -A not removing foo: file still exists (use -f to force removal) M foo ? bar ./bar ./foo 1 files updated, 0 files merged, 0 files removed, 0 files unresolved % 23 state missing, options -A R foo ? bar ./bar 1 files updated, 0 files merged, 0 files removed, 0 files unresolved % 30 state added, options -Af ? bar ./bar ./foo 0 files updated, 0 files merged, 0 files removed, 0 files unresolved % 31 state clean, options -Af R foo ./foo 1 files updated, 0 files merged, 0 files removed, 0 files unresolved % 32 state modified, options -Af R foo ./foo 1 files updated, 0 files merged, 0 files removed, 0 files unresolved % 33 state missing, options -Af R foo 1 files updated, 0 files merged, 0 files removed, 0 files unresolved adding test/bar adding test/foo % dir, options none removing test/bar removing test/foo R test/bar R test/foo ./foo 2 files updated, 0 files merged, 0 files removed, 0 files unresolved % dir, options -f removing test/bar removing test/foo R test/bar R test/foo ./foo 2 files updated, 0 files merged, 0 files removed, 0 files unresolved % dir, options -A not removing test/foo: file still exists (use -f to force removal) removing test/bar R test/bar ./foo ./test/foo 1 files updated, 0 files merged, 0 files removed, 0 files unresolved % dir, options -Af removing test/bar removing test/foo R test/bar R test/foo ./foo ./test/foo 2 files updated, 0 files merged, 0 files removed, 0 files unresolved