X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=dgit.git;a=blobdiff_plain;f=tests%2Flib-gdr;h=08717dd413c113cfc7eca638c2a85058de3b3b89;hp=831a253071c4a5e0071d4b155d524327b7d3cd94;hb=817b18a94707497d21c5a467bdd789e7b039f666;hpb=2c114c6b1f068b19deecc2a5602c3f15d56d6209 diff --git a/tests/lib-gdr b/tests/lib-gdr index 831a2530..08717dd4 100644 --- a/tests/lib-gdr +++ b/tests/lib-gdr @@ -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- + # or AddPatches- + + 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 # 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 +}