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 ..
+