sapling/tests/test-inotify
Renato Cunha 6de8a70a9d inotify: check all components of filenames against hgignore (issue884)
With inotify enabled, files that should be ignored could be detected as
untracked by mercurial. This behavior was wrong because inotify's filestatus
implementation only matched filenames against ignore patterns, instead of
checking if other elements of their paths matched them. This patch fixes the
behavior by checking the file paths against the ignore patterns.

A new test has also been added to the main inotify test to prevent any
regressions.
2010-07-06 22:22:18 -03:00

114 lines
1.7 KiB
Bash
Executable File

#!/bin/sh
"$TESTDIR/hghave" inotify || exit 80
hg init repo1
cd repo1
touch a b c d e
mkdir dir
mkdir dir/bar
touch dir/x dir/y dir/bar/foo
hg ci -Am m
cd ..
hg clone repo1 repo2
echo "[extensions]" >> $HGRCPATH
echo "inotify=" >> $HGRCPATH
cd repo2
echo b >> a
# check that daemon started automatically works correctly
# and make sure that inotify.pidfile works
hg --config "inotify.pidfile=../hg2.pid" status
# make sure that pidfile worked. Output should be silent.
kill `cat ../hg2.pid`
cd ../repo1
echo % inserve
hg inserve -d --pid-file=hg.pid
cat hg.pid >> "$DAEMON_PIDS"
# let the daemon finish its stuff
sleep 1
echo % cannot start, already bound
hg inserve
# 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
HGMERGE=internal:local hg up 0
hg st
HGMERGE=internal:local hg up
hg st
# Test for 1844: "hg ci folder" will not commit all changes beneath "folder"
mkdir 1844
echo a > 1844/foo
hg add 1844
hg ci -m 'working'
echo b >> 1844/foo
hg ci 1844 -m 'broken'
# Test for issue884: "Build products not ignored until .hgignore is touched"
echo '^build$' > .hgignore
hg add .hgignore
hg ci .hgignore -m 'ignorelist'
# Now, lets add some build products...
mkdir build
touch build/x
touch build/y
# build/x & build/y shouldn't appear in "hg st"
hg st
kill `cat hg.pid`