#
+: ${GDR_TEST_DEBUG=-D}
+export GDR_TEST_DEBUG
+
t-git-debrebase () {
local gdr=${DGIT_GITDEBREBASE_TEST-git-debrebase}
: '
$gdr $GDR_TEST_OPTS $GDR_TEST_DEBUG $t_gdr_xopts "$@"
: '}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
'
-
+}
+
+t-gdr-good () {
+ local state=$1
+ local beforetag=$2 # say HEAD to skip this check
+ # state should be one of
+ # laundered
+ # stitched
+ # patches
+
+ git diff --quiet ${beforetag-t.before} -- ':.' ':!debian/patches'
+
+ local etype netype
+
+ case $state in
+ laundered) etype=Upstream ;;
+ stitched) etype=Pseudomerge ;;
+ pushed) etype=AddPatches; netype=Pseudomerge ;;
+ 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
+ ;;
+ AddPatches/SAME)
+ git diff --quiet $expect..$cid -- \
+ ':.' ':!debian/patches'
+ etype=$netype
+ netype=Upstream
+ ;;
+ 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
+}
+
+t-some-changes () {
+ local token=$1
+
+ echo >>debian/zorkmid "// debian $token"
+ git add debian/zorkmid
+ git commit -m "DEBIAN add zorkmid ($token)"
+
+ echo >>src.c "// upstream $token"
+ git commit -a -m "UPSTREAM edit src.c ($token)"
+
+ for f in debian/zorkmid src.c; do
+ echo "// both! $token" >>$f
+ git add $f
+ done
+ git commit -m "MIXED add both ($token)"
}