Mercurial > hg
diff tests/test-mq-missingfiles @ 5581:8a8c341bd292
mq: missing target files do not make qpush to fail immediately (issue 835)
Reported and explained by Peter Arrenbrecht <peter.arrenbrecht@gmail.com>.
Following file additions were skipped but empty files were still created. This situation could lead to qrefresh losing patch information.
author | Patrick Mezard <pmezard@gmail.com> |
---|---|
date | Sun, 02 Dec 2007 13:53:29 +0100 |
parents | |
children | e90e72c6b4c7 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/test-mq-missingfiles Sun Dec 02 13:53:29 2007 +0100 @@ -0,0 +1,69 @@ +#!/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 +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 +cd .. +