X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=dgit.git;a=blobdiff_plain;f=tests%2Flib;h=d131e7b2a8dc4a6328a32d8cb1016135a896ba58;hp=046d36289c1145b53d37f7b7d1dbd4d575e4d9b2;hb=ada48ca013e77d7e821d326db40bc1a59ba639ea;hpb=c17699d17f17f6ea105b7440ff95fa39eebb54a6 diff --git a/tests/lib b/tests/lib index 046d3628..d131e7b2 100644 --- a/tests/lib +++ b/tests/lib @@ -5,6 +5,7 @@ set -x set -o pipefail . tests/lib-core +. tests/lib-restricts t-set-intree @@ -47,6 +48,24 @@ END t-expect-fail () { local mpat="$1"; shift + set +o pipefail + LC_MESSAGES=C "$@" 2>&1 | tee $tmp/t.output + local ps="${PIPESTATUS[*]}" + set -o pipefail + + case $ps in + "0 0") fail "command unexpectedly succeeded (instead of: $mpat)" ;; + *" 0") ;; + *) fail "tee failed" ;; + esac + + t-grep-mpat "$mpat" $tmp/t.output +} + +t-grep-mpat () { + local mpat="$1" + local file="$2" + local grepper=fgrep case "$mpat" in [A-Z]:*) @@ -59,19 +78,8 @@ t-expect-fail () { ;; esac - set +o pipefail - LC_MESSAGES=C "$@" 2>&1 | tee $tmp/t.output - local ps="${PIPESTATUS[*]}" - set -o pipefail - - case $ps in - "0 0") fail "command unexpectedly succeeded (instead of: $mpat)" ;; - *" 0") ;; - *) fail "tee failed" ;; - esac - - $grepper -e "$mpat" $tmp/t.output || - fail "error message not found" + $grepper -e "$mpat" "$file" || + fail "message not found" } t-expect-push-fail () { @@ -104,11 +112,12 @@ t-git-objects-not-present () { t-reporefs () { local whichoutput=$1; shift + local whichrepo=${1-$dgitrepo} local outputfile="$tmp/show-refs.$whichoutput" (set -e exec >"$outputfile" - if test -d $dgitrepo; then - cd $dgitrepo + if test -d $whichrepo; then + cd $whichrepo git show-ref |sort fi) } @@ -293,6 +302,15 @@ t-diff-nogit () { diff --exclude=.git --exclude=.pc -ruN $* } +t-files-notexist () { + local f + for f in "$@"; do + if [ -e $f ]; then + fail "$f exists!" + fi + done +} + t-cloned-fetched-good () { t-diff-nogit ../extract/$p-${v%-*} . t-clean-on-branch dgit/sid @@ -419,6 +437,16 @@ t-pushed-good () { git verify-tag `t-v-tag` } +t-commit-build-push-expect-log () { + local msg=$1 + local mpat=$2 + t-commit "$msg" + t-dgit build + LC_MESSAGES=C \ + t-dgit push --new 2>&1 |tee $tmp/push.log + t-grep-mpat "$mpat" $tmp/push.log +} + t-822-field () { local file=$1 local field=$2 @@ -540,14 +568,20 @@ t-policy-nonexist () { ln -sf no-such-file-or-directory $drs_dispatch/policy-hook } -t-policy () { - local policyhook=$1 - policyhook=${DGIT_INFRA_PFX}$policyhook - case $policyhook in +t-make-hook-link () { + local hook=$1 # in infra/ + local linkpath=$2 + hook=${DGIT_INFRA_PFX}$hook + case $hook in */*) ;; - *) policyhook=`type -P $policyhook` ;; + *) hook=`type -P $hook` ;; esac - ln -sf "$policyhook" $drs_dispatch/policy-hook + ln -sf "$hook" $linkpath +} + +t-policy () { + local policyhook=$1 + t-make-hook-link $policyhook $drs_dispatch/policy-hook } t-debpolicy () { @@ -563,6 +597,11 @@ t-policy-periodic () { test-dummy $drs_dispatch '' --cron } +t-restrict () { + local restriction=$1 + (cd $root; t-restriction-$restriction >&2) +} + t-chain-test () { local ct=$1 local d=${0%/*}