X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=dgit.git;a=blobdiff_plain;f=tests%2Flib-gdr;h=f6333073cdf0ad42fedcdb672b05c5fa73ba2b7c;hp=6ffdd4b08b4110b9ac4d64bbeaee7f9d64ff9a36;hb=4dea77665732625beb1e7b8be5f459dd3b4c7fd7;hpb=bc5f555f9853dabf9bcd13ca425b4728b1037ea9 diff --git a/tests/lib-gdr b/tests/lib-gdr index 6ffdd4b0..f6333073 100644 --- a/tests/lib-gdr +++ b/tests/lib-gdr @@ -1,5 +1,8 @@ # +: ${GDR_TEST_DEBUG=-D} +export GDR_TEST_DEBUG + t-git-debrebase () { local gdr=${DGIT_GITDEBREBASE_TEST-git-debrebase} : ' @@ -7,5 +10,81 @@ t-git-debrebase () { $gdr $GDR_TEST_OPTS $GDR_TEST_DEBUG $t_gdr_xopts "$@" : '}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}} ' - +} + +t-gdr-branch-structure () { + local state=$1 + # state should be one of + # laundered + # stitched + # 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 }