tests/test-mq-missingfiles
author Matt Mackall <mpm@selenic.com>
Fri, 27 Jun 2008 14:53:30 -0500
changeset 6761 cb981fc955fb
parent 5652 e90e72c6b4c7
child 7506 abd2bc899d86
permissions -rwxr-xr-x
remove: work directly off status This allows us to use a single directory walk and to trivially ignore unknown files. The resulting code is also easier to follow.

#!/bin/sh

# Test issue835:
# qpush fails immediately when patching a missing file, but
# remaining added files are still created empty which will
# trick a future qrefresh.

cat > writelines.py <<EOF
import sys
path = sys.argv[1]
args = sys.argv[2:]
assert (len(args) % 2) == 0

f = file(path, 'wb')
for i in xrange(len(args)/2):
   count, s = args[2*i:2*i+2]
   count = int(count)
   s = s.decode('string_escape')
   f.write(s*count)
f.close()

EOF

echo "[extensions]" >> $HGRCPATH
echo "mq=" >> $HGRCPATH

hg init normal
cd normal
python ../writelines.py b 10 'a\n'
hg ci -Am addb
echo a > a
python ../writelines.py b 2 'b\n' 10 'a\n' 2 'c\n'
echo c > c
hg add a c
hg qnew -f changeb
hg qpop
hg rm b
hg ci -Am rmb
echo % push patch with missing target
hg qpush
echo % display added files
cat a
cat c
echo % display rejections
cat b.rej
cd ..


echo "[diff]" >> $HGRCPATH
echo "git=1" >> $HGRCPATH

hg init git
cd git
python ../writelines.py b 1 '\x00'
hg ci -Am addb
echo a > a
python ../writelines.py b 1 '\x01' 1 '\x00'
echo c > c
hg add a c
hg qnew -f changeb
hg qpop
hg rm b
hg ci -Am rmb
echo % push git patch with missing target
hg qpush 2>&1 | sed -e 's/b:.*/b: No such file or directory/'
hg st
echo % display added files
cat a
cat c
echo % display rejections
cat b.rej
cd ..