sapling/tests/test-inotify
Nicolas Dumazet 2645ee079e 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 47d29dcb7266.

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.
2009-07-13 16:49:05 +02:00

74 lines
889 B
Bash
Executable File

#!/bin/sh
"$TESTDIR/hghave" inotify || exit 80
hg init
touch a b c d e
mkdir dir
mkdir dir/bar
touch dir/x dir/y dir/bar/foo
hg ci -Am m
echo "[extensions]" >> $HGRCPATH
echo "inotify=" >> $HGRCPATH
echo % inserve
hg inserve -d --pid-file=hg.pid
cat hg.pid >> "$DAEMON_PIDS"
# let the daemon finish its stuff
sleep 1
# issue907
hg status
echo % clean
hg status -c
echo % all
hg status -A
echo '% path patterns'
echo x > dir/x
hg status .
hg status dir
cd dir
hg status .
cd ..
#issue 1375
#Testing that we can remove a folder and then add a file with the same name
echo % issue 1375
mkdir h
echo h > h/h
hg ci -Am t
hg rm h
echo h >h
hg add h
hg status
hg ci -m0
# Test for issue1735: inotify watches files in .hg/merge
hg st
echo a > a
hg ci -Am a
hg st
echo b >> a
hg ci -m ab
hg st
echo c >> a
hg st
hg up 0
hg st
HGMERGE=internal:local hg up
hg st
kill `cat hg.pid`