tests/test-grep
author Greg Ward <greg-hg@gerg.ca>
Mon, 15 Feb 2010 15:25:29 -0500
branchstable
changeset 10505 b3311e26f94f
parent 9367 1ef630452e0b
child 10826 717c35d55fb3
permissions -rwxr-xr-x
merge: fix --preview to show all nodes that will be merged (issue2043). Formerly, it omitted nodes that were not descendants of the least common ancestor of the two merge parents, even though those nodes contribute to the merge. The new algorithm uses revlog.findmissing() instead of ancestor() + nodesbetween().

#!/bin/sh

mkdir t
cd t
hg init
echo import > port
hg add port
hg commit -m 0 -u spam -d '0 0'
echo export >> port
hg commit -m 1 -u eggs -d '1 0'
echo export > port
echo vaportight >> port
echo 'import/export' >> port
hg commit -m 2 -u spam -d '2 0'
echo 'import/export' >> port
hg commit -m 3 -u eggs -d '3 0'
head -n 3 port > port1
mv port1 port
hg commit -m 4 -u spam -d '4 0'
echo % pattern error
hg grep '**test**'
echo % simple
hg grep port port
echo % all
hg grep --traceback --all -nu port port
echo % other
hg grep import port

hg cp port port2
hg commit -m 4 -u spam -d '5 0'
echo % follow
hg grep --traceback -f 'import$' port2
echo deport >> port2
hg commit -m 5 -u eggs -d '6 0'
hg grep -f --all -nu port port2

cd ..
hg init t2
cd t2
hg grep foobar foo
hg grep foobar
echo blue >> color
echo black >> color
hg add color
hg ci -m 0
echo orange >> color
hg ci -m 1
echo black > color
hg ci -m 2
echo orange >> color
echo blue >> color
hg ci -m 3
hg grep orange
hg grep --all orange

echo % match in last "line" without newline
python -c 'fp = open("noeol", "wb"); fp.write("no infinite loop"); fp.close();'
hg ci -Amnoeol
echo % last character omitted in output to avoid infinite loop
hg grep loop

# Got a traceback when using grep on a single
# revision with renamed files.
cd ..
echo % issue 685
hg init issue685
cd issue685
echo octarine > color
hg ci -Amcolor
hg rename color colour
hg ci -Am rename
hg grep octarine
# Used to crash here
hg grep -r 1 octarine

# Issue337: test that grep follows parent-child relationships instead
# of just using revision numbers.
cd ..
echo % issue 337
hg init issue337
cd issue337

echo white > color
hg commit -A -m "0 white"

echo red > color
hg commit -A -m "1 red"

hg update 0
echo black > color
hg commit -A -m "2 black"

hg update --clean 1
echo blue > color
hg commit -A -m "3 blue"

hg grep --all red