tests/test-mq-missingfiles
author Frank Kingswood <frank@kingswood-consulting.co.uk>
Sun, 15 Jun 2008 15:59:27 +0100
changeset 6687 f8ef39206f6a
parent 5652 e90e72c6b4c7
child 7506 abd2bc899d86
permissions -rwxr-xr-x
convert: cvsps.py - code to generate changesets from a CVS repository

#!/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 ..