chiark / gitweb /
test suite: gdr-import-nostitch: Test -fseries-comments
[dgit.git] / tests / tests / gdr-merge-conflicts
index 6871fd8a45e9aa7d393d392c8ed8b130c8743493..1f3f09e0d1a6ec3336d0ed694b99be4c1e7f4128 100755 (executable)
@@ -3,12 +3,28 @@ set -e
 autoimport=
 . tests/lib
 
-t-dependencies NO-DGIT GDR
+t-dependencies NO-DGIT GDR quilt
 
 t-tstunt-parsechangelog
 t-setup-import gdr-convert-gbp-noarchive
 
-export GIT_DEBREBASE_EXPERIMENTAL_MERGE=1
+t_gdr_xopts+=' --experimental-merge-resolution'
+
+wreckage-before () {
+       junkref=refs/debrebase/wreckage/junk
+       git update-ref $junkref v2.1
+}
+
+wreckage-after () {
+       test '' = "$(t-git-get-ref-exact $junkref)"
+       git for-each-ref refs/debrebase/wreckage | egrep .
+}
+
+no-wreckage () {
+       if git for-each-ref refs/debrebase/wreckage | egrep .; then
+               fail wreckage
+       fi
+}
 
 : ----- prepare the baseline -----
 
@@ -50,20 +66,12 @@ dch -a 'Merge, only conflict was in debian/changelog'
 t-dch-r-rune dch
 git commit -a --amend --no-edit
 
-junkref=refs/debrebase-wreckage/junk
-git update-ref $junkref v2.1
+wreckage-before
 
 t-expect-fail F:'divergent anchors' \
 t-git-debrebase
 
-git rev-parse $junkref
-
-t-expect-fail F:'divergent anchors' \
-t-git-debrebase --save-wreckage
-
-test '' = "$(t-git-get-ref-exact $junkref)"
-
-git for-each-ref refs/debrebase-wreckage | egrep .
+wreckage-after
 
 : ===== late failure in apply =====
 
@@ -75,7 +83,7 @@ git commit -m 'other-upstream-conflict' docs/README
 
 t-git-debrebase quick
 
-if git for-each-ref refs/debrebase-wreckage | egrep .; then fail wreck; fi
+no-wreckage
 
 : ----- make the merge -----
 
@@ -83,12 +91,59 @@ git checkout master
 git reset --hard master-before-merge
 
 t-merge-conflicted-stripping-conflict-markers other docs/README
+t-git-debrebase stitch
 
 : ----- expect failure -----
 
+wreckage-before
+
+t-expect-fail F:'docs/README' \
+t-git-debrebase
+
+wreckage-after
+
+: ===== resolve the conflict =====
+
+# omg
+
+quilt_faff_before () {
+       git checkout -b fix$1 debrebase/wreckage/merged-patchqueue
+       QUILT_PATCHES=debian/patches quilt push -a
+}
+quilt_faff_after () {
+       QUILT_PATCHES=debian/patches quilt refresh
+       git add debian/patches
+       git commit -m FIX
+       git reset --hard
+       git clean -xdff
+       t-git-debrebase record-resolved-merge
+       git checkout master
+}
+
+: ----- badly -----
+
+quilt_faff_before 1
+quilt_faff_after
+
+t-expect-fail E:'upstream files are not the same' \
+t-git-debrebase
+
+t-git-debrebase scrap
+no-wreckage
+
+: ----- well -----
+
 t-expect-fail F:'docs/README' \
+t-git-debrebase
+wreckage-after
+
+quilt_faff_before 2
+git checkout master docs/README
+git reset docs/README
+quilt_faff_after
+
 t-git-debrebase
 
-# xxx want to check wrecknotes appear
+t-gdr-good laundered
 
 t-ok