diff options
Diffstat (limited to 'tests/tests')
-rwxr-xr-x | tests/tests/build-modes | 14 | ||||
-rwxr-xr-x | tests/tests/build-modes-long | 36 | ||||
-rwxr-xr-x | tests/tests/build-modes-source | 17 | ||||
-rwxr-xr-x | tests/tests/gdr-diverge-nmu-dgit | 2 | ||||
-rwxr-xr-x | tests/tests/gdr-edits | 7 | ||||
-rwxr-xr-x | tests/tests/gdr-fresh | 45 | ||||
-rwxr-xr-x | tests/tests/gdr-import-dgitview | 3 | ||||
-rwxr-xr-x | tests/tests/gdr-import-nostitch | 30 | ||||
-rwxr-xr-x | tests/tests/gdr-makepatches7 | 2 | ||||
-rwxr-xr-x | tests/tests/gdr-merge | 65 | ||||
-rwxr-xr-x | tests/tests/gdr-merge-conflicts | 150 | ||||
-rwxr-xr-x | tests/tests/gdr-newupstream | 65 | ||||
-rwxr-xr-x | tests/tests/gdr-subcommands | 38 | ||||
-rwxr-xr-x | tests/tests/gdr-unprocessable | 2 | ||||
-rwxr-xr-x | tests/tests/gdr-unprocessable-hints | 33 | ||||
-rwxr-xr-x | tests/tests/gitattributes | 2 | ||||
-rwxr-xr-x | tests/tests/sbuild-gitish | 1 | ||||
-rwxr-xr-x | tests/tests/test-list-uptodate | 3 |
18 files changed, 471 insertions, 44 deletions
diff --git a/tests/tests/build-modes b/tests/tests/build-modes index c476ec8..58ec58d 100755 --- a/tests/tests/build-modes +++ b/tests/tests/build-modes @@ -3,6 +3,7 @@ set -e . tests/lib . $troot/lib-build-modes +bm-buildproductsdir-nonworking bm-prep for act in \ @@ -14,21 +15,10 @@ for act in \ 'build -F' \ 'build -g' \ 'build -G' \ - build-source \ ; do bm-guess-e-source-e-targets "$act" - - case $act in - build-source) - cleanmodes="$cleanmodes_all" - ;; - *) - cleanmodes="$cleanmodes_default" - ;; - esac - + cleanmodes="$cleanmodes_default" real_act="$act" - bm-act-iterate done diff --git a/tests/tests/build-modes-long b/tests/tests/build-modes-long new file mode 100755 index 0000000..20a2ce3 --- /dev/null +++ b/tests/tests/build-modes-long @@ -0,0 +1,36 @@ +#!/bin/bash +set -e +. tests/lib +. $troot/lib-build-modes + +bm-prep + +for build in \ + 'source' \ + 'any' \ + 'all' \ + 'binary' \ + 'full' \ + 'source,any' \ + 'all,any' \ +; do + act="build --build=$build" + + case "$build" in + *source*|*full*) e_source=true ;; + *) e_source=false ;; + esac + + case "$build" in + *binary*|*any*all*|*all*any*) + e_targets='build binary' ;; + *any*) e_targets='build-arch binary-arch' ;; + *all*) e_targets='build-indep binary-indep' ;; + esac + + cleanmodes="$cleanmodes_default" + real_act="$act" + bm-act-iterate +done + +t-ok diff --git a/tests/tests/build-modes-source b/tests/tests/build-modes-source new file mode 100755 index 0000000..480e573 --- /dev/null +++ b/tests/tests/build-modes-source @@ -0,0 +1,17 @@ +#!/bin/bash +set -e +. tests/lib +. $troot/lib-build-modes + +bm-prep + +for act in \ + build-source \ +; do + bm-guess-e-source-e-targets "$act" + cleanmodes="$cleanmodes_all" + real_act="$act" + bm-act-iterate +done + +t-ok diff --git a/tests/tests/gdr-diverge-nmu-dgit b/tests/tests/gdr-diverge-nmu-dgit index 1d136a9..007c35b 100755 --- a/tests/tests/gdr-diverge-nmu-dgit +++ b/tests/tests/gdr-diverge-nmu-dgit @@ -42,7 +42,7 @@ t-nmu-causes-ff-fail git checkout dgit/dgit/sid # detach -t-expect-fail 'E:CONFLICT.*Commit Debian 3\.0 \(quilt\) metadata' \ +t-expect-fail 'E:CONFLICT.*Commit patch queue' \ git rebase master git rebase --skip diff --git a/tests/tests/gdr-edits b/tests/tests/gdr-edits index 124de29..0bdf15f 100755 --- a/tests/tests/gdr-edits +++ b/tests/tests/gdr-edits @@ -38,4 +38,11 @@ t-refs-same-start t-ref-same refs/heads/before-noop t-ref-head +git checkout -b some-new-branch +t-some-changes 2nd-maintainer +t-dgit quilt-fixup +t-gdr-made-patches +# NB quilt-fixup doesn't always manage to call gdr; +# push does, since it will make the pseudomerge first + t-ok diff --git a/tests/tests/gdr-fresh b/tests/tests/gdr-fresh new file mode 100755 index 0000000..169181c --- /dev/null +++ b/tests/tests/gdr-fresh @@ -0,0 +1,45 @@ +#!/bin/bash +set -e +autoimport= +. tests/lib +. $troot/lib-gdr + +t-dependencies GDR + +t-gdr-gbp-import-core + +t-git-next-date + +# leaves us on upstream +git rm debian/rules +git commit -m 'strip upstream rules' +git tag -f v1.0 + +git branch -m master master.old +git checkout -b master + +t-git-next-date + +git checkout quilt-tip debian +git commit -m 'initial debianisation' + +t-make-orig example 1.0 + +dgit-quilt-fixup-uses-gdr () { + t-git-next-date + + DGIT_TEST_DEBUG=-DD t-dgit quilt-fixup 2>&1 |tee ../fixup.out + grep '^branch_is_gdr .* YES$' ../fixup.out +} + +dgit-quilt-fixup-uses-gdr + +git checkout --detach patch-queue/quilt-tip +git rebase master +git push . HEAD:master +git checkout master + +dgit-quilt-fixup-uses-gdr +t-gdr-made-patches + +t-ok diff --git a/tests/tests/gdr-import-dgitview b/tests/tests/gdr-import-dgitview index 3670deb..18d06f5 100755 --- a/tests/tests/gdr-import-dgitview +++ b/tests/tests/gdr-import-dgitview @@ -38,7 +38,8 @@ t-ref-head t-git-debrebase --noop-ok convert-from-dgit-view t-ref-head -t-git-debrebase convert-from-dgit-view --always-convert-anyway +t-git-debrebase -falready-converted convert-from-dgit-view \ + --always-convert-anyway t-expect-fail E:'ref varies' t-ref-head t-gdr-good laundered diff --git a/tests/tests/gdr-import-nostitch b/tests/tests/gdr-import-nostitch new file mode 100755 index 0000000..c32b71e --- /dev/null +++ b/tests/tests/gdr-import-nostitch @@ -0,0 +1,30 @@ +#!/bin/bash +set -e +autoimport= +. tests/lib +. $troot/lib-gdr + +t-dependencies GDR + +t-tstunt-parsechangelog + +t-gdr-gbp-import-core-with-queue + +git checkout master + +git tag -m synthetic debian/1.0-1 + +echo '# comment' >>debian/patches/series +git add debian/patches/series +git commit -m 'add a comment' + +t-expect-fail F:-fseries-comments \ +t-git-debrebase -fupstream-has-debian -funused-patches convert-from-gbp + +t-git-debrebase -fupstream-has-debian -funused-patches -fseries-comments \ + convert-from-gbp \ + 2>&1 | tee ../convert-msg + +grep -e 'dgit --overwrite will be needed' ../convert-msg >/dev/null + +t-ok diff --git a/tests/tests/gdr-makepatches7 b/tests/tests/gdr-makepatches7 index 52462d4..d6a5143 100755 --- a/tests/tests/gdr-makepatches7 +++ b/tests/tests/gdr-makepatches7 @@ -13,7 +13,7 @@ git checkout upstream/2.0 echo '*patch*' >>.gitignore git commit -m nasty .gitignore git tag v2.1 -GZIP=-1 git archive -o ../${p}_2.1.orig.tar.gz --prefix ${p}/ v2.1 +t-make-orig $p 2.1 git checkout master t-git-debrebase new-upstream 2.1-1 diff --git a/tests/tests/gdr-merge b/tests/tests/gdr-merge new file mode 100755 index 0000000..78b79e9 --- /dev/null +++ b/tests/tests/gdr-merge @@ -0,0 +1,65 @@ +#!/bin/bash +set -e +autoimport= +. tests/lib + +t-dependencies GDR + +t-tstunt-parsechangelog +t-setup-import gdr-convert-gbp-noarchive + +cd $p + +t-gdr-prep-new-upstream 2.1 +git tag v2.1 upstream + +t-some-changes before +t-git-debrebase quick + +: ----- prepare LH branch ----- + +git checkout -b other +t-some-changes other '' -other + +echo 'other-conflict' >>debian/zorkmid +git commit -m 'other-conflict' debian/zorkmid + +: ----- prepare RH branch ----- + +git checkout master +t-some-changes us-1 '' -us +t-git-debrebase new-upstream 2.1 +t-some-changes us-2 '' -us +echo 'us-conflict' >>debian/zorkmid +git commit -m 'us-conflict' debian/zorkmid +t-git-debrebase quick + +: ----- introduce a vanilla merge ----- + +t-merge-conflicted-stripping-conflict-markers other debian/zorkmid + +t-expect-fail E:'general two-parent merge' \ +t-git-debrebase + +t_gdr_xopts+=' --experimental-merge-resolution' + +: ----- expect to be able to merge ----- + +t-git-debrebase +t-gdr-good laundered + +t-refs-same-start +t-ref-head +t-git-debrebase +t-ref-head + +t-git-debrebase scrap + +t-some-changes after +t-git-debrebase +t-gdr-good laundered + +t-dgit quilt-fixup +t-gdr-made-patches + +t-ok diff --git a/tests/tests/gdr-merge-conflicts b/tests/tests/gdr-merge-conflicts new file mode 100755 index 0000000..5a3f243 --- /dev/null +++ b/tests/tests/gdr-merge-conflicts @@ -0,0 +1,150 @@ +#!/bin/bash +set -e +autoimport= +. tests/lib + +t-dependencies NO-DGIT GDR quilt + +t-tstunt-parsechangelog +t-tstunt debchange +t-setup-import gdr-convert-gbp-noarchive + +t_gdr_xopts+=' --experimental-merge-resolution' + +wreckage-before () { + junkref=refs/debrebase/wreckage/junk + git update-ref $junkref v2.1 +} + +wreckage-after () { + test '' = "$(t-git-get-ref-exact $junkref)" + git for-each-ref refs/debrebase/wreckage | egrep . +} + +no-wreckage () { + if git for-each-ref refs/debrebase/wreckage | egrep .; then + fail wreckage + fi +} + +: ----- prepare the baseline ----- + +cd $p + +t-gdr-prep-new-upstream 2.1 +git tag v2.1 upstream + +t-some-changes before +t-git-debrebase quick + +: ===== early failure in walk ===== + +: ----- prepare other ----- + +git checkout -b other +t-some-changes other '' -other + +git branch other-before-new-upstream + +t-git-debrebase new-upstream 2.1 +t-git-next-date + +: ----- prepare master ----- + +git checkout master +t-git-debrebase new-upstream 2.1 +t-git-next-date + +git branch master-before-merge + +: ----- make the merge ----- + +git merge --no-edit -s ours other + +# we have to do a little dance to make this not a pseudomerge +t-git-next-date +dch -a 'Merge, only conflict was in debian/changelog' +t-dch-r-rune dch +git commit -a --amend --no-edit + +wreckage-before + +t-expect-fail F:'divergent anchors' \ +t-git-debrebase + +wreckage-after + +: ===== late failure in apply ===== + +git checkout other +git reset --hard other-before-new-upstream + +echo other-upstream-confict >>docs/README +git commit -m 'other-upstream-conflict' docs/README + +t-git-debrebase quick + +no-wreckage + +: ----- make the merge ----- + +git checkout master +git reset --hard master-before-merge + +t-merge-conflicted-stripping-conflict-markers other docs/README +t-git-debrebase stitch + +: ----- expect failure ----- + +wreckage-before + +t-expect-fail F:'docs/README' \ +t-git-debrebase + +wreckage-after + +: ===== resolve the conflict ===== + +# omg + +quilt_faff_before () { + git checkout -b fix$1 debrebase/wreckage/merged-patchqueue + QUILT_PATCHES=debian/patches quilt push -a +} +quilt_faff_after () { + QUILT_PATCHES=debian/patches quilt refresh + git add debian/patches + git commit -m FIX + git reset --hard + git clean -xdff + t-git-debrebase record-resolved-merge + git checkout master +} + +: ----- badly ----- + +quilt_faff_before 1 +quilt_faff_after + +t-expect-fail E:'upstream files are not the same' \ +t-git-debrebase + +t-git-debrebase scrap +no-wreckage + +: ----- well ----- + +t-expect-fail F:'docs/README' \ +t-git-debrebase +wreckage-after + +quilt_faff_before 2 +git checkout master docs/README +git reset docs/README +quilt_faff_after + +t-git-debrebase + +t-gdr-good laundered + +t-ok diff --git a/tests/tests/gdr-newupstream b/tests/tests/gdr-newupstream index ada5516..3039669 100755 --- a/tests/tests/gdr-newupstream +++ b/tests/tests/gdr-newupstream @@ -12,18 +12,7 @@ cd $p : 'upstream hat' -new-upstream () { - uv=$1 - t-git-next-date - git checkout make-upstream - git reset --hard upstream - t-make-new-upstream-tarball $uv - git push . make-upstream:upstream - git checkout master - t-git-next-date -} - -new-upstream 2.1 +t-gdr-prep-new-upstream 2.1 : 'maintainer hat' @@ -37,8 +26,35 @@ t-git-debrebase new-upstream $v git tag v2.1 upstream +git branch before-new-upstream + +clog-check-1 () { + before=$1 + date=$(git log --format=%aD -n1 debian/changelog) + date=$(date -R -d "$date") + git show $before:debian/changelog >../clog.before + m=" * Update to new upstream version ${v%-*}." + e="dgit test git user <dgit-test@debian.example.net> $date" +} +clog-check-2 () { + diff -u ../clog.expected debian/changelog +} + +: ----- ordinary new upstream test ----- + t-git-debrebase new-upstream ${v%-*} +clog-check-1 before-new-upstream +cat - <<END ../clog.before >../clog.expected +example ($v) UNRELEASED; urgency=medium + +$m + + -- $e + +END +clog-check-2 + t-gdr-good laundered git reflog | egrep 'debrebase new-upstream.*checkout' @@ -47,9 +63,9 @@ t-gdr-good stitched git branch ordinary -: 'with --anchor' +: ----- 'with --anchor' ----- -git reset --hard startpoint +git checkout -b with-anchor startpoint t-git-debrebase analyse >../anal.anch anchor=$(perl <../anal.anch -ne ' @@ -69,4 +85,25 @@ t-gdr-good stitched git diff --quiet ordinary +: ----- with pre-existing changes ----- + +git checkout -b with-preexisting before-new-upstream + +t-dch-commit drivel-in-changelog +git branch before-new-upstream-with-changes + +t-git-next-date + +t-git-debrebase new-upstream ${v%-*} + +clog-check-1 before-new-upstream-with-changes +perl -pe <../clog.before >../clog.expected ' + BEGIN { ($m,$e,@ARGV) = @ARGV; } + next unless 1..m/^ --/; + s/\([^()]+\)/('$v')/ if m/^example /; + $_ .= "$m\n" if m/^ \* drivel-in-changelog/; + $_ = " -- $e\n" if m/^ -- /; +' "$m" "$e" +clog-check-2 + t-ok diff --git a/tests/tests/gdr-subcommands b/tests/tests/gdr-subcommands index b4d8f44..672ddc9 100755 --- a/tests/tests/gdr-subcommands +++ b/tests/tests/gdr-subcommands @@ -25,6 +25,11 @@ mix-it () { t-git-next-date } +git checkout -b raw-converted-from-gbp converted-from-gbp +test "$(git diff --stat HEAD^2)" +git diff --exit-code --stat HEAD^1 +git reset --hard HEAD^1 + git checkout -b stitched-laundered master mix-it t-git-debrebase quick @@ -51,7 +56,8 @@ git show-ref subcmd () { local subcmd=$1 shift - for startbranch in {stitched,unstitched}-{laundered,mixed}; do + for startbranch in {stitched,unstitched}-{laundered,mixed} \ + raw-converted-from-gbp; do work="work-$subcmd-$startbranch" : "---------- $subcmd $startbranch ----------" @@ -127,7 +133,7 @@ make_check () { case "$1" in [Nn]*) t-refs-same-start - t-refs-same refs/heads/$before refs/heads/$work + t-refs-same refs/heads/$before refs/heads/$peel ;; U*) t-refs-same-start @@ -162,6 +168,7 @@ make_check () { P*) t-dgit -wgf --quilt=nofix quilt-fixup git diff HEAD~ debian/patches | egrep . + t-gdr-made-patches git diff --quiet HEAD~ -- ':.' ':!debian/patches' git reset --hard HEAD~ ;; @@ -169,6 +176,11 @@ make_check () { git diff --quiet HEAD refs/heads/$before -- ':.' ':!debian/patches' t-gdr-good laundered ;; + A*) + t-refs-notexist \ + refs/ffq-prev/heads/$work \ + refs/debrebase-last/heads/$work + ;; t*) git diff --quiet HEAD refs/heads/$before ;; @@ -177,7 +189,7 @@ make_check () { ;; Z*) t-refs-same-start - t-refs-same refs/heads/$work + t-refs-same refs/heads/$peel t-refs-same refs/heads/before-unstitch/$startbranch t-ref-head ;; @@ -191,20 +203,21 @@ Ec="F:No ongoing git-debrebase session" Ep="F:Patch export produced patch amendments" # input state: -# stitched? st'd st'd unst'd unst'd -# laundered? laund'd mixed laund'd mixed +# stitched? st'd st'd unst'd unst'd convert +# laundered? laund'd mixed laund'd mixed -from-gbp # # "mixed" means an out of order branch # containing mixed commits and patch additions, # but which needs even more patches # -subcmd '' Ult Ull Vlt Vl -subcmd stitch Ns Nu Sltf Stf -subcmd prepush Ns Nu Sltf Stf -subcmd quick ns Sl Sltf Sl -subcmd conclude "$Ec" "$Ec" Sltf Sl -subcmd scrap Ns Ns Z Z -subcmd make-patches sPft "$Ep" uPft "$Ep" +subcmd '' Ult Ull Vlt Vl nU +subcmd stitch Ns Nu Sltf Stf Ns +subcmd prepush ns nu Sltf Stf ns +subcmd quick ns Sl Sltf Sl n +subcmd conclude "$Ec" "$Ec" Sltf Sl N +subcmd scrap Ns Ns Z Z N +subcmd make-patches sPft "$Ep" uPft "$Ep" Pn +subcmd forget-was-ever-debrebase nA nA nA nA nA # # result codes, each one is a check: # E:$pat } this is an error (must come first) @@ -224,6 +237,7 @@ subcmd make-patches sPft "$Ep" uPft "$Ep" # s result is stitched, debrebase-last exists and is unchanged # S result is stitch just made, remaining letters apply to result~ # Z result is rewind to before changes made +# A no ffq-prev or debrebase-last refs ("Amnesia") # # P result is add-patches, remaining letters apply to result~ # diff --git a/tests/tests/gdr-unprocessable b/tests/tests/gdr-unprocessable index 14d1e8e..5e86522 100755 --- a/tests/tests/gdr-unprocessable +++ b/tests/tests/gdr-unprocessable @@ -14,7 +14,7 @@ t-dgit setup-mergechangelogs subcmd () { cmd=("$@") - branch merge 'complex merge' + branch merge 'general two-parent merge' branch origin 'origin commit' } diff --git a/tests/tests/gdr-unprocessable-hints b/tests/tests/gdr-unprocessable-hints new file mode 100755 index 0000000..710d7c9 --- /dev/null +++ b/tests/tests/gdr-unprocessable-hints @@ -0,0 +1,33 @@ +#!/bin/bash +set -e +. tests/lib + +t-dependencies GDR + +t-tstunt-parsechangelog +t-setup-import gdr-convert-gbp + +cd $p + +b=gdr-unprocessable/origin + +git checkout $b +t-expect-fail E:'maybe you needed git-debrebase convert-from' \ +t-git-debrebase quick + +git update-ref refs/ffq-prev/heads/$b master +t-expect-fail E:'Consider git-debrebase scrap' \ +t-git-debrebase quick + +git update-ref -d refs/ffq-prev/heads/$b master +git update-ref refs/debrebase-last/heads/$b HEAD +t-expect-fail E:'Branch/history seems mangled' \ +t-git-debrebase quick +test "$(grep 'git-debrebase scrap' ../t.output)" = "" + +git update-ref refs/debrebase-last/heads/$b master +t-expect-fail E:'Branch/history mangled, and diverged' \ +t-git-debrebase quick +test "$(grep 'git-debrebase scrap' ../t.output)" = "" + +t-ok diff --git a/tests/tests/gitattributes b/tests/tests/gitattributes index bdc61f8..9ebc216 100755 --- a/tests/tests/gitattributes +++ b/tests/tests/gitattributes @@ -44,7 +44,7 @@ badattr () { done } -# xxx want to make each of these files into a quilt patch +# todo: want to make each of these files into a quilt patch t-git-config core.eol crlf diff --git a/tests/tests/sbuild-gitish b/tests/tests/sbuild-gitish index 7c0a30c..da90b6f 100755 --- a/tests/tests/sbuild-gitish +++ b/tests/tests/sbuild-gitish @@ -6,7 +6,6 @@ t-dependencies sbuild man-db t-restrict x-dgit-schroot-build t-tstunt-parsechangelog -t-buildproductsdir-config t-prep-newpackage example 1.1 diff --git a/tests/tests/test-list-uptodate b/tests/tests/test-list-uptodate index 1e5f199..f28f404 100755 --- a/tests/tests/test-list-uptodate +++ b/tests/tests/test-list-uptodate @@ -1,7 +1,10 @@ #!/bin/bash set -e +autoimport= . tests/lib +t-dependencies NO-DEFAULT git + : "just verifies internal consistency of test suite" cd $root |