X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=dgit.git;a=blobdiff_plain;f=tests%2Flib;h=564ea512a6b0fd61a913d39618e3fe97e5cd7d84;hp=a4932d335cd36109a440c46ad9156a812d436616;hb=3a3ec0b3ff3408922f4740d83fa291d6d30adf45;hpb=ac92d3b15e0baf0d1634efc86c8919acb44bafa6 diff --git a/tests/lib b/tests/lib index a4932d33..564ea512 100644 --- a/tests/lib +++ b/tests/lib @@ -12,10 +12,13 @@ t-report-failure () { rc=$1 cat <&2 TEST FAILED +cwd: $PWD funcs: ${FUNCNAME[*]} lines: ${BASH_LINENO[*]} files: ${BASH_SOURCE[*]} END + t-save-artifacts + exit 16 } @@ -28,15 +31,19 @@ t-set-intree : ${DGIT_TEST_DEBUG=-D} export DGIT_TEST_DEBUG -export GIT_COMMITTER_DATE='1440253867 +0100' -export GIT_AUTHOR_DATE='1440253867 +0100' +: ${DGIT_TEST_DISTRO+ ${distro=${DGIT_TEST_DISTRO}}} + +export GIT_COMMITTER_DATE='1515000000 +0100' +export GIT_AUTHOR_DATE='1515000000 +0100' root=`pwd` troot=$root/tests testname="${DGIT_TEST_TESTNAME-${0##*/}}" +export DGIT_TEST_TROOT=$troot tmp=$ADTTMP if [ x"$tmp" = x ]; then + export DGIT_TEST_BYHAND=1 mkdir -p tests/tmp tmpbase=$troot/tmp tmp=tests/tmp/$testname @@ -51,11 +58,13 @@ tmp=`pwd` t-set-using-tmp +test -f $tmp/.save-env || \ env -0 >$tmp/.save-env ln -f $troot/ssh ssh export DEBCHANGE_VENDOR=dpkg +unset VISUAL mkdir -p $tmp/incoming cat <$tmp/dput.cf @@ -65,6 +74,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} @@ -147,7 +159,7 @@ t-reporefs () { exec >"$outputfile" if test -d $whichrepo; then cd $whichrepo - git show-ref |sort + git show-ref |t-sort fi) } @@ -184,6 +196,13 @@ t-git-none () { (set -e; cd $tmp/git; tar xf $troot/git-template.tar) } +t-salsa-add-remote () { + local d=$tmp/salsa/$p + mkdir -p $d + (set -e; cd $d; git init --bare) + git remote add ${1-origin} $d +} + t-git-merge-base () { git merge-base $1 $2 || test $? = 1 } @@ -355,9 +374,11 @@ t-expect-fsck-fail () { } t-git-fsck () { + local fsckerrs=$(git rev-parse --git-dir)/dgit-test-fsck.errs + set +e LC_MESSAGES=C git fsck --no-dangling --strict 2>&1 \ - | tee dgit-test-fsck.errs + | tee $fsckerrs ps="${PIPESTATUS[*]}" set -e @@ -371,7 +392,7 @@ t-git-fsck () { pats+=(-e 'notice: No default references') set +e - grep -v "${pats[@]}" dgit-test-fsck.errs + grep -v "${pats[@]}" $fsckerrs rc=$? set -e case $rc in @@ -385,34 +406,57 @@ t-fscks () { ( shopt -s nullglob for d in $tmp/*/.git $tmp/git/*.git; do - cd "$d" + cd "${d%/.git}" t-git-fsck done ) } t-ok () { + : '========================================' 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 } t-dgit () { local dgit=${DGIT_TEST-dgit} - pwd + pwd >&2 : ' {{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{' $dgit --dgit=$dgit --dget:-u --dput:--config=$tmp/dput.cf \ - ${distro--dtest-dummy} ${distro+${distro:+-d}${distro}} \ + ${dgit_config_debian_alias-"--config-lookup-explode=dgit-distro.debian.alias-canon"} \ + ${DGIT_GITDEBREBASE_TEST+--git-debrebase=}${DGIT_GITDEBREBASE_TEST} \ + ${distro+${distro:+-d}}${distro--dtest-dummy} \ $DGIT_TEST_OPTS $DGIT_TEST_DEBUG \ - -k39B13D8A $t_dgit_xopts "$@" + -kBCD22CD83243B79D3DFAC33EA3DBCBC039B13D8A $t_dgit_xopts "$@" : '}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}} ' } +t-dgit-manpage () { + local section=$1 + local page=$2 + (export LC_ALL=C.UTF-8 + if [ "$DGIT_TEST_INTREE" ]; then + make -C $DGIT_TEST_INTREE $page.$section.view + else + man $section $page + fi) +} + t-diff-nogit () { diff --exclude=.git --exclude=.pc -ruN $* } @@ -452,12 +496,12 @@ t-setup-done () { local savedirs=$2 local importeval=$3 - local import=IMPORT.${0##*/} + local import=IMPORT.${DGIT_TEST_TESTNAME-${0##*/}} exec 4>$tmp/$import.new 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 @@ -615,6 +659,21 @@ t-check-pushed-master () { if [ x$mbase = x$master ]; then fail "failed to ff master"; fi } +t-push-was-source-only () { + local f + t-files-notexist $tmp/incoming/${p}_${v}_*.deb \ + $tmp/incoming/${p}_${v}_*.udeb + # we permit _source.buildinfo files; see test_changes_source_only() + for f in $tmp/incoming/${p}_${v}_*.buildinfo; do + if [ -e $f ]; then + case "$f" in + *_source.buildinfo) ;; + *) fail "non-source-only file $f exists!" ;; + esac + fi + done +} + t-pushed-good () { local branch=$1 local suite=${2:-sid} @@ -776,6 +835,12 @@ t-822-field () { ' <$file } +t-defdistro () { + export DGIT_TEST_DISTRO='' + distro='' + t-git-config dgit-suite.unstable.distro test-dummy +} + t-stunt-envvar () { local var=$1 local tstunt=$2 @@ -799,7 +864,14 @@ t-tstunt--save-real () { local rc local real set +e - real=$(type -p "$f") + real=$( + p=":$PATH:" + p="${p/:"$tmp/tstunt":/:}" + p="${p%:}" + p="${p#:}" + PATH="$p" + type -p "$f" + ) rc=$? set -e @@ -949,12 +1021,26 @@ t-commit () { 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 "$@" + git commit -m "dch $*" debian/changelog +} + t-git-config () { git config --global "$@" } t-drs () { - export DGIT_TEST_TROOT=$troot t-git-config dgit-distro.test-dummy.git-url "ext::$troot/drs-git-ext %S " t-git-config dgit-distro.test-dummy.git-check true t-git-config dgit-distro.test-dummy.git-create true @@ -1007,7 +1093,9 @@ t-dsd () { } t-policy-admin () { + : '((((((((((((((((((((((((((((((((((((((((' ${DGIT_INFRA_PFX}dgit-repos-admin-debian --repos $tmp/git "$@" + : '))))))))))))))))))))))))))))))))))))))))' } t-policy-nonexist () { @@ -1039,8 +1127,15 @@ t-debpolicy () { } t-policy-periodic () { + : '((((((((((((((((((((((((((((((((((((((((' ${DGIT_REPOS_SERVER_TEST-dgit-repos-server} \ test-dummy $drs_dispatch '' --cron + : '))))))))))))))))))))))))))))))))))))))))' +} + +t-buildproductsdir-config () { + t-git-config dgit.default.build-products-dir $tmp/bpd + mkdir -p $tmp/bpd } t-restrict () { @@ -1068,7 +1163,13 @@ t-alt-test () { t-chain-test "${t#*-}" } -case "$0" in -*/gnupg) ;; -*) t-setup-import gnupg ;; -esac +t-git-config dgit.default.old-dsc-distro test-dummy + +for import in ${autoimport-gnupg}; do + case "$0" in + */$import) ;; + *) + t-setup-import $import + ;; + esac +done