X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=dgit.git;a=blobdiff_plain;f=tests%2Flib;h=ba87fbc78c344dcbad63f9f6fa257f64da36d97f;hp=dc88643243e9f97465c012164889e6aefd9d6d0e;hb=cf3d7744cb378b1f1450ffd7c206c2b7d96db0ca;hpb=e5dcd8e57251ade4f309357bd6cfe2501bdc1afb diff --git a/tests/lib b/tests/lib index dc886432..ba87fbc7 100644 --- a/tests/lib +++ b/tests/lib @@ -17,6 +17,8 @@ funcs: ${FUNCNAME[*]} lines: ${BASH_LINENO[*]} files: ${BASH_SOURCE[*]} END + t-save-artifacts + exit 16 } @@ -31,16 +33,18 @@ export DGIT_TEST_DEBUG : ${DGIT_TEST_DISTRO+ ${distro=${DGIT_TEST_DISTRO}}} -export GIT_COMMITTER_DATE='1515000000 +0100' -export GIT_AUTHOR_DATE='1515000000 +0100' +export GIT_COMMITTER_DATE='1530000000 +0100' +export GIT_AUTHOR_DATE='1530000000 +0100' root=`pwd` troot=$root/tests testname="${DGIT_TEST_TESTNAME-${0##*/}}" export DGIT_TEST_TROOT=$troot +bpd=.. tmp=$ADTTMP if [ x"$tmp" = x ]; then + export DGIT_TEST_BYHAND=1 mkdir -p tests/tmp tmpbase=$troot/tmp tmp=tests/tmp/$testname @@ -58,9 +62,11 @@ t-set-using-tmp test -f $tmp/.save-env || \ env -0 >$tmp/.save-env -ln -f $troot/ssh ssh +ln -sf $troot/ssh ssh export DEBCHANGE_VENDOR=dpkg +unset VISUAL +unset GIT_EDITOR mkdir -p $tmp/incoming cat <$tmp/dput.cf @@ -70,6 +76,9 @@ incoming = $tmp/incoming run_dinstall = 0 END +schroot=${DGIT_SCHROOT_CHROOT:-build} +# Pretty much any Debian sid snapshot schroot will do. + : ${t_archive_method:=aq} : ${tagpfx:=archive/test-dummy} : ${suitespecs:=sid:unstable} @@ -83,7 +92,7 @@ t-expect-fail () { local mpat="$1"; shift set +o pipefail - LC_MESSAGES=C "$@" 2>&1 | tee $tmp/t.output + LC_MESSAGES=${expect_fail_lcmessages-C} "$@" 2>&1 | tee $tmp/t.output local ps="${PIPESTATUS[*]}" set -o pipefail @@ -152,7 +161,7 @@ t-reporefs () { exec >"$outputfile" if test -d $whichrepo; then cd $whichrepo - git show-ref |sort + git show-ref |t-sort fi) } @@ -333,7 +342,7 @@ t-archive () { v=$2 local dscf=${p}_$2.dsc rm -f $tmp/mirror/pool/main/${p}_* - ln $troot/pkg-srcs/${p}_${2%-*}* $tmp/mirror/pool/main/ + ln -s $troot/pkg-srcs/${p}_${2%-*}* $tmp/mirror/pool/main/ t-archive-query $suite rm -rf $tmp/extract mkdir $tmp/extract @@ -395,6 +404,13 @@ t-git-fsck () { esac } +t-check-only-bpd () { + if [ "$bpd" = .. ]; then return; fi + t-files-notexist \ + $tmp/*.{deb,changes,dsc,buildinfo} \ + $tmp/*.{tar,diff}.* +} + t-fscks () { ( shopt -s nullglob @@ -407,10 +423,20 @@ t-fscks () { t-ok () { : '========================================' + t-check-only-bpd t-fscks + t-save-artifacts echo ok. } +t-save-artifacts () { + artifacts="$AUTOPKGTEST_ARTIFACTS" + if [ x"$artifacts" = x ]; then return; fi + if [ x"tmp" = x ]; then return; fi + GZIP=-1v tar -C "$tmp" -zc -f "$artifacts/${0##*/}.tar.gz" \ + --exclude=\*.tar . +} + t-rm-dput-dropping () { rm -f $tmp/${p}_${v}_*.upload } @@ -485,7 +511,7 @@ t-setup-done () { local vn for vn in $savevars; do - perl >&4 -I. -MDebian::Dgit -e ' + perl >&4 -"I$root" -MDebian::Dgit -e ' printf "%s=%s\n", $ARGV[0], shellquote $ARGV[1] ' $vn "$(eval "printf '%s\n' \"\$$vn\"")" done @@ -658,6 +684,12 @@ t-push-was-source-only () { done } +t-push-included () { + for f in $@; do + stat $tmp/incoming/$f + done +} + t-pushed-good () { local branch=$1 local suite=${2:-sid} @@ -685,6 +717,12 @@ t-pushed-good-core () { git verify-tag `t-v-tag` } +t-pushed-good-check-changes () { + changes_filename="$tmp/incoming/${p}_${v}_*.changes" + grep -E "^Distribution: $suite" $changes_filename + grep -E "^Version: $v" $changes_filename +} + t-splitbrain-pushed-good--unpack () { cd $tmp rm -rf t-unpack @@ -996,17 +1034,49 @@ t-make-badcommit () { t-expect-fsck-fail $badcommit } +t-make-orig () { + # leaves ust set to filename of orig tarball + local p=$1 + local v=$2 + local tag=${3-v$2} + ust=${p}_${v}.orig.tar.gz + GZIP=-1 git archive -o $bpd/$ust --prefix=${p}-${v}/ $tag +} + +t-merge-conflicted-stripping-conflict-markers () { + local otherbranch=$1 + local file=$2 + + t-expect-fail F:"Merge conflict in $file" \ + git merge $otherbranch + + perl -i~ -ne 'print unless m{^(?:\<\<\<|\>\>\>|===)}' "$file" + git add "$file" + git commit --no-edit +} + t-commit () { local msg=$1 v=${2:-${majorv:-1}.$revision} - dch --force-distribution -v$v --distribution ${3:-unstable} "$1" + $troot/tstunt/debchange \ + --force-distribution -v$v --distribution ${3:-unstable} "$1" git add debian/changelog debcommit revision=$(( ${revision-0} + 1 )) } +t-dch-r-rune () { + local cmd="$1"; shift + local suite=${1-unstable} + $cmd -r -D "$suite" '' +} + +t-dch-commit-r () { + t-dch-r-rune t-dch-commit "$@" +} + t-dch-commit () { - faketime @"${GIT_AUTHOR_DATE% *}" dch "$@" + $troot/tstunt/debchange "$@" git commit -m "dch $*" debian/changelog } @@ -1107,6 +1177,16 @@ t-policy-periodic () { : '))))))))))))))))))))))))))))))))))))))))' } +t-buildproductsdir-config () { + bpd=$tmp/bpd + t-git-config dgit.default.build-products-dir $bpd + mkdir -p $bpd + cat <>$tmp/.gbp.conf +[buildpackage] +export-dir = $bpd +END +} + t-restrict () { local restriction=$1 (cd $root; t-restriction-$restriction >&2) @@ -1134,7 +1214,11 @@ t-alt-test () { t-git-config dgit.default.old-dsc-distro test-dummy -case "$0" in -*/gnupg) ;; -*) t-setup-import gnupg ;; -esac +for import in ${autoimport-gnupg}; do + case "$0" in + */$import) ;; + *) + t-setup-import $import + ;; + esac +done