tests/test-hgignore
author Nicolas Dumazet <nicdumz.commits@gmail.com>
Sat, 23 May 2009 18:44:01 +0900
changeset 8600 d46cdfcecaf1
parent 6479 31abcae33b4f
permissions -rwxr-xr-x
inotify: proper fix for issue1542 (partially reverting 67e59a9886d5) issue1542 description: Unknown files (?) placed in a directory are still marked as present and unknown when the containing directory is moved out of the repository scope. Why 67e59a9886d5 was bad: * When the problem we're addressing only deals with unknown files, the fix to updatestatus applies for all statuses * The only reason to move the call schedule_work(wpath, 'd') seems to be that it allowed an updatestatus call on the deleted directory, in deleted(). But deleted() should not be called on directories in the first place. * After fixing an independant issue (1371), test-inotify-issue1542 was failing Fix: When processing a deletion of a directory, walk the tree of the unknown files and remove the entries from repowatcher. This step does not need to be added in the generic scan() routine: it is only necessary on a directory deletion.

#!/bin/sh

hg init

# Test issue 562: .hgignore requires newline at end
touch foo
touch bar
touch baz
cat > makeignore.py <<EOF
f = open(".hgignore", "w")
f.write("ignore\n")
f.write("foo\n")
# No EOL here
f.write("bar")
f.close()
EOF

python makeignore.py
echo % should display baz only
hg status
rm foo bar baz .hgignore makeignore.py

touch a.o
touch a.c
touch syntax
mkdir dir
touch dir/a.o
touch dir/b.o
touch dir/c.o

hg add dir/a.o
hg commit -m 0
hg add dir/b.o

echo "--" ; hg status

echo "*.o" > .hgignore
echo "--" ; hg status 2>&1 | sed -e 's/abort: .*\.hgignore:/abort: .hgignore:/'

echo ".*\.o" > .hgignore
echo "--" ; hg status

# Check it does not ignore the current directory '.'
echo "^\." > .hgignore
echo "--" ; hg status

echo "glob:**.o" > .hgignore
echo "--" ; hg status

echo "glob:*.o" > .hgignore
echo "--" ; hg status

echo "syntax: glob" > .hgignore
echo "re:.*\.o" >> .hgignore
echo "--" ; hg status

echo "syntax: invalid" > .hgignore
echo "--" ; hg status 2>&1 | sed -e 's/.*\.hgignore:/.hgignore:/'

echo "syntax: glob" > .hgignore
echo "*.o" >> .hgignore
echo "--" ; hg status

echo "relglob:syntax*" > .hgignore
echo "--" ; hg status

echo "relglob:*" > .hgignore
echo "--" ; hg status

cd dir
echo "--" ; hg status .