X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=dgit.git;a=blobdiff_plain;f=tests%2Flib-gdr;h=26afb1d341823b18dea0e0b2f1b453f583a4ff28;hp=4e08ff7ee8e8496e918de21f04cdfdbb8657dfeb;hb=1c1d3d66204122d547e8cc203a3173ff5f3eb3c4;hpb=b894911be94f1221ce3d4214b72b819173e3206f diff --git a/tests/lib-gdr b/tests/lib-gdr index 4e08ff7e..26afb1d3 100644 --- a/tests/lib-gdr +++ b/tests/lib-gdr @@ -11,3 +11,176 @@ t-git-debrebase () { : '}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}} ' } + +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 bwtip + + case $state in + laundered) + etype=Upstream + bwtip=Y:`t-git-debrebase breakwater` + ;; + 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) ;; + Packaging/SAME) ;; + Packaging/Upstream) ;; + AddPatches/SAME) ;; + Changelog/Packaging) ;; + Changelog/Upstream) ;; + Upstream/SAME) ;; + BreakwaterUpstreamMerge/Upstream) ;; + BreakwaterUpstreamMerge/Packaging) ;; + *) + fail "etype=$etype ctype=$ctype cetype=$cetype $cid" + ;; + esac + + case "$ctype/$etype" in + Packaging/Upstream|\ + Changelog/Upstream) + if [ "x$bwtip" != x ]; then + test "$bwtip" = "Y:$cid" + bwtip='' + fi + esac + + case "$ctype" in + Pseudomerge) + expect=${info#Contributor=} + expect=${expect%% *} + enparents=2 + git diff --quiet $expect..$cid + etype=Upstream + ;; + Packaging) + git diff --quiet $expect..$cid -- ':.' ':!debian' + git diff --quiet $expect..$cid -- ':debian/patches' + etype=Packaging + ;; + AddPatches) + git diff --quiet $expect..$cid -- \ + ':.' ':!debian/patches' + etype=$netype + netype=Upstream + ;; + Changelog) + git diff --quiet $expect..$cid -- \ + ':.' ':!debian/changelog' + etype=Packaging + ;; + Upstream/SAME) + git diff --quiet $expect..$cid -- ':debian' + ;; + BreakwaterUpstreamMerge) + break + ;; + 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 + + t-git-next-date + + 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)" + + t-git-next-date +} + +t-make-new-upstream-tarball () { + local uv=$1 + git checkout make-upstream + # leaves ust set to filename of orig tarball + echo "upstream $uv" >>docs/README + git commit -a -m "upstream $uv tarball" + ust=example_$uv.orig.tar.gz + git archive -o ../$ust --prefix=example-2.0/ make-upstream +} + +t-nmu-upload-1 () { + # usage: + # v= + # nmu-upload-1 + # 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 + git checkout -f -b $nmubranch + t-git-debrebase + t-git-debrebase convert-to-gbp + t-git-next-date + # now we are on a gbp patched-unapplied branch +} + + +t-nmu-upload-2 () { + t-git-next-date + t-dch-commit -v $v -m "nmu $nmubranch $v" +} + +t-nmu-upload-3 () { + t-dch-commit -r sid + + t-dgit -wgf build-source + + cd .. + c=${p}_${v}_source.changes + debsign -kBCD22CD83243B79D3DFAC33EA3DBCBC039B13D8A $c + dput -c $tmp/dput.cf test-dummy $c + + t-archive-process-incoming sid + t-git-next-date + cd $p + git checkout master +}