summaryrefslogtreecommitdiff
path: root/tests/test-mq-missingfiles.t
diff options
context:
space:
mode:
Diffstat (limited to 'tests/test-mq-missingfiles.t')
-rw-r--r--tests/test-mq-missingfiles.t195
1 files changed, 195 insertions, 0 deletions
diff --git a/tests/test-mq-missingfiles.t b/tests/test-mq-missingfiles.t
new file mode 100644
index 0000000..6897ff0
--- /dev/null
+++ b/tests/test-mq-missingfiles.t
@@ -0,0 +1,195 @@
+
+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
+ adding b
+ $ 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
+ popping changeb
+ patch queue now empty
+ $ hg rm b
+ $ hg ci -Am rmb
+
+Push patch with missing target:
+
+ $ hg qpush
+ applying changeb
+ unable to find 'b' for patching
+ 2 out of 2 hunks FAILED -- saving rejects to file b.rej
+ patch failed, unable to continue (try -v)
+ patch failed, rejects left in working dir
+ errors during apply, please fix and refresh changeb
+ [2]
+
+Display added files:
+
+ $ cat a
+ a
+ $ cat c
+ c
+
+Display rejections:
+
+ $ cat b.rej
+ --- b
+ +++ b
+ @@ -1,3 +1,5 @@
+ +b
+ +b
+ a
+ a
+ a
+ @@ -8,3 +10,5 @@
+ a
+ a
+ a
+ +c
+ +c
+
+Test missing renamed file
+
+ $ hg qpop
+ popping changeb
+ patch queue now empty
+ $ hg up -qC 0
+ $ echo a > a
+ $ hg mv b bb
+ $ python ../writelines.py bb 2 'b\n' 10 'a\n' 2 'c\n'
+ $ echo c > c
+ $ hg add a c
+ $ hg qnew changebb
+ $ hg qpop
+ popping changebb
+ patch queue now empty
+ $ hg up -qC 1
+ $ hg qpush
+ applying changebb
+ patching file bb
+ Hunk #1 FAILED at 0
+ Hunk #2 FAILED at 7
+ 2 out of 2 hunks FAILED -- saving rejects to file bb.rej
+ b not tracked!
+ patch failed, unable to continue (try -v)
+ patch failed, rejects left in working dir
+ errors during apply, please fix and refresh changebb
+ [2]
+ $ cat a
+ a
+ $ cat c
+ c
+ $ cat bb.rej
+ --- bb
+ +++ bb
+ @@ -1,3 +1,5 @@
+ +b
+ +b
+ a
+ a
+ a
+ @@ -8,3 +10,5 @@
+ a
+ a
+ a
+ +c
+ +c
+
+ $ cd ..
+
+
+ $ echo "[diff]" >> $HGRCPATH
+ $ echo "git=1" >> $HGRCPATH
+
+ $ hg init git
+ $ cd git
+ $ python ../writelines.py b 1 '\x00'
+ $ hg ci -Am addb
+ adding b
+ $ echo a > a
+ $ python ../writelines.py b 1 '\x01' 1 '\x00'
+ $ echo c > c
+ $ hg add a c
+ $ hg qnew -f changeb
+ $ hg qpop
+ popping changeb
+ patch queue now empty
+ $ hg rm b
+ $ hg ci -Am rmb
+
+Push git patch with missing target:
+
+ $ hg qpush
+ applying changeb
+ unable to find 'b' for patching
+ 1 out of 1 hunks FAILED -- saving rejects to file b.rej
+ patch failed, unable to continue (try -v)
+ patch failed, rejects left in working dir
+ errors during apply, please fix and refresh changeb
+ [2]
+ $ hg st
+ ? b.rej
+
+Display added files:
+
+ $ cat a
+ a
+ $ cat c
+ c
+
+Display rejections:
+
+ $ cat b.rej
+ --- b
+ +++ b
+ GIT binary patch
+ literal 2
+ Jc${No0000400IC2
+
+ $ cd ..
+
+Test push creating directory during git copy or rename:
+
+ $ hg init missingdir
+ $ cd missingdir
+ $ echo a > a
+ $ hg ci -Am adda
+ adding a
+ $ mkdir d
+ $ hg copy a d/a2
+ $ hg mv a d/a
+ $ hg qnew -g -f patch
+ $ hg qpop
+ popping patch
+ patch queue now empty
+ $ hg qpush
+ applying patch
+ now at: patch
+
+ $ cd ..
+