chiark / gitweb /
test suite: default dsc distro config setting: Move to lib.
[dgit.git] / tests / lib
index 52aca71b6e27cb5818bba3f040f1f5bef76aca19..7b9de175155708bf979ccf036453d1b0d6d3dbb3 100644 (file)
--- a/tests/lib
+++ b/tests/lib
@@ -28,6 +28,8 @@ t-set-intree
 : ${DGIT_TEST_DEBUG=-D}
 export DGIT_TEST_DEBUG
 
+: ${DGIT_TEST_DISTRO+ ${distro=${DGIT_TEST_DISTRO}}}
+
 export GIT_COMMITTER_DATE='1440253867 +0100'
 export GIT_AUTHOR_DATE='1440253867 +0100'
 
@@ -51,6 +53,7 @@ tmp=`pwd`
 
 t-set-using-tmp
 
+test -f $tmp/.save-env || \
 env -0 >$tmp/.save-env
 
 ln -f $troot/ssh ssh
@@ -114,7 +117,7 @@ t-grep-mpat () {
 t-expect-push-fail () {
        local mpat="$1"; shift
 
-       local triedpush=`git rev-parse HEAD`
+       local triedpush; triedpush=`git rev-parse HEAD`
 
        t-reporefs pre-push
        t-expect-fail "$mpat"  "$@"
@@ -191,9 +194,9 @@ t-git-merge-base () {
 t-has-ancestor () {
        # t-has-ancestor ANCESTOR
        # (CHILD is implicit, HEAD)
-       local now=`git rev-parse HEAD`
-       local ancestor=`git rev-parse $1^{}`
-       local mbase=`t-git-merge-base $ancestor $now`
+       local now;      now=`git rev-parse HEAD`
+       local ancestor; ancestor=`git rev-parse $1^{}`
+       local mbase;    mbase=`t-git-merge-base $ancestor $now`
        if [ x$mbase != x$ancestor ]; then
                fail "not ff $ancestor..$now, $mbase != $ancestor"
        fi
@@ -203,7 +206,8 @@ t-has-parent-or-is () {
        # t-has-parent-or-is CHILD PARENT
        local child=$1
        local parent=$2
-       local parents=$(git show --pretty=format:' %P %H ' "$child")
+       local parents
+       parents=$(git show --pretty=format:' %P %H ' "$child")
        parent=$(git rev-parse "$parent~0")
        case "$parents" in
        *" $parent "*)  ;;
@@ -310,7 +314,7 @@ t-archive-query-aq () {
        local p=$2
        local v=$3
        local dscf=$4
-       local sha=`sha256sum <$tmp/mirror/pool/$dscf`
+       local sha; sha=`sha256sum <$tmp/mirror/pool/$dscf`
        echo "${v} ${sha%  -} $dscf" >>$tmp/aq/package.$suite.${p}
        t-aq-archive-updated $suite $p
 }
@@ -391,6 +395,7 @@ t-fscks () {
 }
 
 t-ok () {
+       : '========================================'
        t-fscks
        echo ok.
 }
@@ -405,7 +410,9 @@ t-dgit () {
        : '
 {{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{'
        $dgit --dgit=$dgit --dget:-u --dput:--config=$tmp/dput.cf \
-               -dtest-dummy $DGIT_TEST_OPTS $DGIT_TEST_DEBUG \
+ ${dgit_config_debian_alias-"--config-lookup-explode=dgit-distro.debian.alias-canon"} \
+               ${distro--dtest-dummy} ${distro+${distro:+-d}${distro}} \
+               $DGIT_TEST_OPTS $DGIT_TEST_DEBUG \
                -k39B13D8A $t_dgit_xopts "$@"
        : '}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
 '
@@ -528,18 +535,18 @@ t-git-get-ref () {
 
 t-ref-same-exact () {
        local name="$1"
-       local val=`t-git-get-ref-exact $name`
+       local val; val=`t-git-get-ref-exact $name`
        t-ref-same-val "$name" $val
 }
 
 t-ref-same () {
        local name="$1"
-       local val=`t-git-get-ref $name`
+       local val; val=`t-git-get-ref $name`
        t-ref-same-val "$name" $val
 }
 
 t-ref-head () {
-       local val=`git rev-parse HEAD`
+       local val; val=`git rev-parse HEAD`
        t-ref-same-val HEAD $val
 }
 
@@ -589,11 +596,11 @@ t-format-ref () {
 t-sametree-parent () {
        local ref=$1
        local parent
-       local ctree=$(t-format-ref '%T' "$ref")
+       local ctree; ctree=$(t-format-ref '%T' "$ref")
        while :; do
                local psame=''
                for parent in $(t-format-ref '%P' "$ref"); do
-                       local ptree=$(t-format-ref '%T' "$parent")
+                       local ptree; ptree=$(t-format-ref '%T' "$parent")
                        if [ "x$ptree" = "x$ctree" ]; then
                                psame+=" $parent"
                        fi
@@ -605,11 +612,11 @@ t-sametree-parent () {
 }
 
 t-check-pushed-master () {
-       local master=`t-git-get-ref refs/heads/master`
+       local master; master=`t-git-get-ref refs/heads/master`
        if [ x$master = x$t_ref_val ]; then return; fi
        if [ x$master = x ]; then fail "failed to push master"; fi
        # didn't update master, it must be not FF
-       local mbase=`t-git-merge-base $master $t_ref_val`
+       local mbase; mbase=`t-git-merge-base $master $t_ref_val`
        if [ x$mbase = x$master ]; then fail "failed to ff master"; fi
 }
 
@@ -774,6 +781,11 @@ t-822-field () {
        ' <$file
 }
 
+t-defdistro () {
+       export DGIT_TEST_DISTRO=''
+       t-git-config dgit-suite.unstable.distro test-dummy
+}
+
 t-stunt-envvar () {
        local var=$1
        local tstunt=$2
@@ -788,12 +800,48 @@ t-stunt-envvar () {
        '
 }
 
+t-tstunt--save-real () {
+       local f="$1"
+       case "$f" in
+       */*) return ;;
+       esac
+
+       local rc
+       local real
+       set +e
+       real=$(
+               p=":$PATH:"
+               p="${p/:"$tmp/tstunt":/:}"
+               p="${p%:}"
+               p="${p#:}"
+               PATH="$p"
+               type -p "$f"
+       )
+       rc=$?
+       set -e
+
+       case $rc in
+       1)      return ;;
+       0)      ;;
+       *)      fail "did not find $f on PATH $PATH" ;;
+       esac
+
+       local varname=${f//[^_0-9a-zA-Z]/_}
+       varname=DGIT_TEST_REAL_${varname^^}
+
+       eval "
+               : \${$varname:=\$real}
+               export $varname
+       "
+}
+
 t-tstunt () {
        local tstunt=$tmp/tstunt
        t-stunt-envvar PATH $tstunt
        t-stunt-envvar PERLLIB $tstunt
        local f
        for f in "$@"; do
+               t-tstunt--save-real $f
                f="./$f"
                local d="$tstunt/${f%/*}"
                mkdir -p $d
@@ -810,8 +858,6 @@ t-tstunt-lintian () {
 }
 
 t-tstunt-debuild () {
-       : ${DGIT_TEST_REAL_DEBUILD:=$(type -p debuild)}
-       export DGIT_TEST_REAL_DEBUILD
        t-tstunt debuild
 }
 
@@ -822,8 +868,12 @@ t-incoming-dsc () {
 
 t-ref-dsc-dgit () {
        t-incoming-dsc
-       local val=`t-822-field $incoming_dsc Dgit`
-       perl -e '$_=shift @ARGV; die "Dgit $_ ?" unless m/^\w+\b/;' "$val"
+       local val; val=`t-822-field $incoming_dsc Dgit`
+       val=$( perl -e '
+               $_=shift @ARGV;
+               die "Dgit $_ ?" unless m/^\w+\b/;
+               print $&,"\n" or die $!;
+       ' "$val")
        t-ref-same-val $incoming_dsc "$val"
 }
 
@@ -898,6 +948,15 @@ t-gbp-example-prep () {
                remotes/dgit/dgit/sid
 }
 
+t-make-badcommit () {
+       badcommit=$(
+               git cat-file commit HEAD | \
+               perl -pe 's/^committer /commiter /' | \
+               git hash-object -w -t commit --stdin
+       )
+       t-expect-fsck-fail $badcommit
+}
+
 t-commit () {
        local msg=$1
        v=${2:-${majorv:-1}.$revision}
@@ -965,7 +1024,9 @@ t-dsd () {
 }
 
 t-policy-admin () {
+       : '(((((((((((((((((((((((((((((((((((((((('
        ${DGIT_INFRA_PFX}dgit-repos-admin-debian --repos $tmp/git "$@"
+       : '))))))))))))))))))))))))))))))))))))))))'
 }
 
 t-policy-nonexist () {
@@ -997,8 +1058,10 @@ t-debpolicy () {
 }
 
 t-policy-periodic () {
+       : '(((((((((((((((((((((((((((((((((((((((('
        ${DGIT_REPOS_SERVER_TEST-dgit-repos-server} \
                test-dummy $drs_dispatch '' --cron
+       : '))))))))))))))))))))))))))))))))))))))))'
 }
 
 t-restrict () {
@@ -1026,6 +1089,8 @@ t-alt-test () {
        t-chain-test "${t#*-}"
 }
 
+t-git-config dgit.default.old-dsc-distro test-dummy
+
 case "$0" in
 */gnupg) ;;
 *)     t-setup-import gnupg    ;;