summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--tests/lib-gdr69
-rwxr-xr-xtests/tests/gdr-edits2
2 files changed, 70 insertions, 1 deletions
diff --git a/tests/lib-gdr b/tests/lib-gdr
index 4e08ff7..fb58bf9 100644
--- a/tests/lib-gdr
+++ b/tests/lib-gdr
@@ -11,3 +11,72 @@ t-git-debrebase () {
: '}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
'
}
+
+t-gdr-branch-structure () {
+ local state=$1
+ # state should be one of
+ # laundered
+ # stitched
+ # patches
+
+ case $state in
+ laundered) etype=Upstream ;;
+ stitched) etype=Pseudomerge ;;
+ patches) etype=XXX-TODO ;;
+ esac
+
+ t-git-debrebase analyse >../anal.check
+ expect=`git rev-parse HEAD`
+ exec <../anal.check
+ local cid ctype info nparents
+ 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 parents="`git log -n1 --pretty=format:%P $cid`"
+ expect="$parents"
+ enparents=1
+ : "$ctype/$cetype" "$parents"
+ case "$ctype/$cetype" in
+ Pseudomerge/SAME)
+ expect=${info#Contributor=}
+ expect=${expect%% *}
+ enparents=2
+ git diff --quiet $expect..$cid
+ etype=Upstream
+ ;;
+ Packaging/SAME|\
+ Packaging/Upstream)
+ git diff --quiet $expect..$cid -- ':.' ':!debian'
+ git diff --quiet $expect..$cid -- ':debian/patches'
+ etype=Packaging
+ ;;
+ Changelog/Packaging|\
+ Changelog/Upstream)
+ git diff --quiet $expect..$cid -- \
+ ':.' ':!debian/changelog'
+ etype=Packaging
+ ;;
+ Upstream/SAME)
+ git diff --quiet $expect..$cid -- ':debian'
+ ;;
+ BreakwaterUpstreamMerge/Upstream| \
+ BreakwaterUpstreamMerge/Packaging)
+ break
+ ;;
+ *)
+ fail "etype=$etype ctype=$ctype cetype=$cetype $cid"
+ ;;
+ esac
+
+ local cnparents=`printf "%s" "$parents" | wc -w`
+ test $cnparents = $enparents
+
+ case "$parents" in
+ *"$expect"*) ;;
+ *) fail 'unexpected parent' ;;
+ esac
+
+ done
+}
diff --git a/tests/tests/gdr-edits b/tests/tests/gdr-edits
index ddb354d..70735e9 100755
--- a/tests/tests/gdr-edits
+++ b/tests/tests/gdr-edits
@@ -30,7 +30,7 @@ t-git-debrebase
git diff t.before -- ':.' ':!debian/patches'
-: todo 'check that the branch has the expected structure'
+t-gdr-branch-structure laundered
t-git-debrebase stitch --prose=wombat