summaryrefslogtreecommitdiff
path: root/tests/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests/tests')
-rwxr-xr-xtests/tests/build-modes14
-rwxr-xr-xtests/tests/build-modes-long36
-rwxr-xr-xtests/tests/build-modes-source17
-rwxr-xr-xtests/tests/gdr-diverge-nmu-dgit2
-rwxr-xr-xtests/tests/gdr-edits7
-rwxr-xr-xtests/tests/gdr-fresh45
-rwxr-xr-xtests/tests/gdr-import-dgitview3
-rwxr-xr-xtests/tests/gdr-import-nostitch30
-rwxr-xr-xtests/tests/gdr-makepatches72
-rwxr-xr-xtests/tests/gdr-merge65
-rwxr-xr-xtests/tests/gdr-merge-conflicts150
-rwxr-xr-xtests/tests/gdr-newupstream65
-rwxr-xr-xtests/tests/gdr-subcommands38
-rwxr-xr-xtests/tests/gdr-unprocessable2
-rwxr-xr-xtests/tests/gdr-unprocessable-hints33
-rwxr-xr-xtests/tests/gitattributes2
-rwxr-xr-xtests/tests/sbuild-gitish1
-rwxr-xr-xtests/tests/test-list-uptodate3
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