Mercurial > hg
view tests/test-children @ 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 | 8b90d763ea90 |
children | bb5ea66789e3 |
line wrap: on
line source
#!/bin/sh # test children command cat <<EOF >> $HGRCPATH [extensions] hgext.children= EOF echo "% init" hg init t cd t echo "% no working directory" hg children echo % setup echo 0 > file0 hg ci -qAm 0 -d '0 0' echo 1 > file1 hg ci -qAm 1 -d '1 0' echo 2 >> file0 hg ci -qAm 2 -d '2 0' hg co null echo 3 > file3 hg ci -qAm 3 -d '3 0' echo "% hg children at revision 3 (tip)" hg children hg co null echo "% hg children at nullrev (should be 0 and 3)" hg children hg co 1 echo "% hg children at revision 1 (should be 2)" hg children hg co 2 echo "% hg children at revision 2 (other head)" hg children for i in null 0 1 2 3; do echo "% hg children -r $i" hg children -r $i done echo "% hg children -r 0 file0 (should be 2)" hg children -r 0 file0 echo "% hg children -r 1 file0 (should be 2)" hg children -r 1 file0 hg co 0 echo "% hg children file0 at revision 0 (should be 2)" hg children file0