diff options
Diffstat (limited to 'tests/tests/gdr-merge-conflicts')
-rwxr-xr-x | tests/tests/gdr-merge-conflicts | 150 |
1 files changed, 150 insertions, 0 deletions
diff --git a/tests/tests/gdr-merge-conflicts b/tests/tests/gdr-merge-conflicts new file mode 100755 index 0000000..5a3f243 --- /dev/null +++ b/tests/tests/gdr-merge-conflicts @@ -0,0 +1,150 @@ +#!/bin/bash +set -e +autoimport= +. tests/lib + +t-dependencies NO-DGIT GDR quilt + +t-tstunt-parsechangelog +t-tstunt debchange +t-setup-import gdr-convert-gbp-noarchive + +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 ----- + +cd $p + +t-gdr-prep-new-upstream 2.1 +git tag v2.1 upstream + +t-some-changes before +t-git-debrebase quick + +: ===== early failure in walk ===== + +: ----- prepare other ----- + +git checkout -b other +t-some-changes other '' -other + +git branch other-before-new-upstream + +t-git-debrebase new-upstream 2.1 +t-git-next-date + +: ----- prepare master ----- + +git checkout master +t-git-debrebase new-upstream 2.1 +t-git-next-date + +git branch master-before-merge + +: ----- make the merge ----- + +git merge --no-edit -s ours other + +# we have to do a little dance to make this not a pseudomerge +t-git-next-date +dch -a 'Merge, only conflict was in debian/changelog' +t-dch-r-rune dch +git commit -a --amend --no-edit + +wreckage-before + +t-expect-fail F:'divergent anchors' \ +t-git-debrebase + +wreckage-after + +: ===== late failure in apply ===== + +git checkout other +git reset --hard other-before-new-upstream + +echo other-upstream-confict >>docs/README +git commit -m 'other-upstream-conflict' docs/README + +t-git-debrebase quick + +no-wreckage + +: ----- make the merge ----- + +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 + +t-gdr-good laundered + +t-ok |