chiark / gitweb /
git-debrebase: test suite: t-gdr-good: Introduce etypes, a sequence
[dgit.git] / tests / lib-gdr
index 831a253071c4a5e0071d4b155d524327b7d3cd94..08717dd413c113cfc7eca638c2a85058de3b3b89 100644 (file)
@@ -18,19 +18,35 @@ t-gdr-good () {
        # state should be one of
        #   laundered
        #   stitched
-       #   patches
+       #   pushed
 
        git diff --quiet ${beforetag-t.before} -- ':.' ':!debian/patches'
 
-       local etype netype bwtip
+       local etypes bwtip
 
+       LC_MESSAGES=C t-git-debrebase status >../status.check
        case $state in
        laundered)
-                       etype=Upstream
+               egrep '^  *branch is laundered' ../status.check
+               ;;
+       stitched|pushed)
+               egrep \
+ '^  *branch contains furniture|^  *branch is unlaundered|^  *branch needs laundering' ../status.check
+               egrep '^  stitched$' ../status.check
+               ;;
+       esac
+
+       # etypes is either a type,
+       # or   PseudoMerge-<more etypes>
+       # or   AddPatches-<more etypes>
+
+       case $state in
+       laundered)
+                       etypes=Upstream
                        bwtip=Y:`t-git-debrebase breakwater`
                ;;
-       stitched)       etype=Pseudomerge ;;
-       pushed)         etype=AddPatches; netype=Pseudomerge ;;
+       stitched)       etypes=Pseudomerge-Upstream ;;
+       pushed)         etypes=AddPatches-Pseudomerge-Upstream ;;
        esac
 
        t-git-debrebase analyse >../anal.check
@@ -40,8 +56,8 @@ t-gdr-good () {
        while read cid ctype info; do
                : ===== $cid $ctype $info =====
                test $cid = $expect
-               local cetype=$etype
-               if [ "x$ctype" = "x$etype" ]; then cetype=SAME; fi
+               local cetype=${etypes%%-*}
+               if [ "x$ctype" = "x$cetype" ]; then cetype=SAME; fi
                local parents="`git log -n1 --pretty=format:%P $cid`"
                expect="$parents"
                enparents=1
@@ -55,14 +71,14 @@ t-gdr-good () {
                Changelog/Packaging)                    ;;
                Changelog/Upstream)                     ;;
                Upstream/SAME)                          ;;
-               BreakwaterUpstreamMerge/Upstream)       ;;
-               BreakwaterUpstreamMerge/Packaging)      ;;
+               Anchor/Upstream)                        ;;
+               Anchor/Packaging)                       ;;
                *)
-                       fail "etype=$etype ctype=$ctype cetype=$cetype $cid"
+                       fail "etypes=$etypes ctype=$ctype cetype=$cetype $cid"
                        ;;
                esac
 
-               case "$ctype/$etype" in
+               case "$ctype/$etypes" in
                Packaging/Upstream|\
                Changelog/Upstream)
                        if [ "x$bwtip" != x ]; then
@@ -77,28 +93,37 @@ t-gdr-good () {
                        expect=${expect%% *}
                        enparents=2
                        git diff --quiet $expect..$cid
-                       etype=Upstream
+                       etypes=${etypes#*-}
+
+                       : 'reject pointless pseudomerges'
+                       local overwritten=${parents/$expect/}
+                       overwritten=${overwritten// /}
+                       t-git-debrebase analyse $overwritten >../anal.overwr
+                       local ocid otype oinfo
+                       read <../anal.overwr ocid otype oinfo
+                       case "$otype" in
+                       Pseudomerge) test "x$info" != "x$oinfo" ;;
+                       esac
                        ;;
                Packaging)
                        git diff --quiet $expect..$cid -- ':.' ':!debian' 
                        git diff --quiet $expect..$cid -- ':debian/patches'
-                       etype=Packaging
+                       etypes=Packaging
                        ;;
                AddPatches)
                        git diff --quiet $expect..$cid -- \
                                ':.' ':!debian/patches'
-                       etype=$netype
-                       netype=Upstream
+                       etypes=${etypes#*-}
                        ;;
                Changelog)
                        git diff --quiet $expect..$cid -- \
                                ':.' ':!debian/changelog'
-                       etype=Packaging
+                       etypes=Packaging
                        ;;
                Upstream/SAME)
                        git diff --quiet $expect..$cid -- ':debian'
                        ;;
-               BreakwaterUpstreamMerge)
+               Anchor)
                        break
                        ;;
                esac
@@ -106,6 +131,11 @@ t-gdr-good () {
                local cnparents=`printf "%s" "$parents" | wc -w`
                test $cnparents = $enparents
 
+               local cndparents=`
+       for f in $parents; do echo $f; done | sort -u | wc -w
+                               `
+               test $cndparents = $cnparents
+
                case "$parents" in
                *"$expect"*)    ;;
                *)              fail 'unexpected parent' ;;
@@ -151,6 +181,8 @@ t-nmu-upload-1 () {
        #  nmu-upload-1 <nmubranch>
        #  gbp pq import or perhaps other similar things
        #  nmu-upload-2
+       #  maybe make some dgit-covertible commits
+       #  nmu-upload-3
 
        t-git-next-date
        nmubranch=$1
@@ -165,7 +197,9 @@ t-nmu-upload-1 () {
 t-nmu-upload-2 () {
        t-git-next-date
        t-dch-commit -v $v -m "nmu $nmubranch $v"
-       t-some-changes "nmu $numbranch $v"
+}
+
+t-nmu-upload-3 () {
        t-dch-commit -r sid
 
        t-dgit -wgf build-source
@@ -180,3 +214,55 @@ t-nmu-upload-2 () {
        cd $p
        git checkout master
 }
+
+t-nmu-commit-an-upstream-change () {
+       echo >>newsrc.c "// more upstream"
+       git add newsrc.c
+       git commit -m 'UPSTREAM NMU'
+}
+
+t-maintainer-commit-some-changes () {
+       t-dch-commit -v$v -m "start $v"
+
+       t-some-changes "maintainer $v"
+       t-git-debrebase
+       t-git-debrebase stitch
+
+       git branch did.maintainer
+
+       t-git-next-date
+}
+
+t-nmu-causes-ff-fail () {
+       t-dgit fetch
+
+       t-expect-fail E:'Not.*fast-forward' \
+       git merge --ff-only dgit/dgit/sid
+
+       t-expect-fail E:'-fdiverged.*refs/remotes/dgit/dgit/sid' \
+       t-git-debrebase
+}
+
+t-nmu-reconciled-good () {
+       local nmutree=$1
+
+       : 'check that what we have is what is expected'
+
+       git checkout -b compare.nmu origin/master~0
+       git checkout $nmutree .
+       git rm -rf debian/patches
+       git commit -m 'rm patches nmu'
+
+       git checkout -b compare.maintainer origin/master~0
+       git checkout did.maintainer .
+       git rm -rf --ignore-unmatch debian/patches
+       git commit --allow-empty -m 'rm patches maintainer'
+
+       git merge compare.nmu
+       git diff --quiet master
+
+       : 'check that dgit still likes it'
+
+       git checkout master
+       t-dgit -wgf quilt-fixup
+}