X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=dgit.git;a=blobdiff_plain;f=tests%2Flib;h=7cd8062cae3c7d1b6671832bce1197a9d35a587a;hp=a3974253f733e467f5827d2a6f0af8d4aaa6c764;hb=5339e3c5dcc53b10ea981c106ad7211b5a701ee1;hpb=b02532fd7d3c82864c76eecbfd99a1abc7e2c1b2 diff --git a/tests/lib b/tests/lib index a3974253..7cd8062c 100644 --- a/tests/lib +++ b/tests/lib @@ -47,6 +47,17 @@ 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 + local grepper=fgrep case "$mpat" in [A-Z]:*) @@ -59,17 +70,6 @@ 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" } @@ -92,7 +92,7 @@ t-expect-push-fail () { t-git-objects-not-present () { # t-git-objects-not-present GITDIR|'' OBJID [...] # specifying '' means the repo for package $p - local gitdir="${1-$tmp/git/$p.git}" + local gitdir="${1-$dgitrepo}" local obj if ! [ -e "$gitdir" ]; then return; fi for obj in "$@"; do @@ -107,8 +107,8 @@ t-reporefs () { local outputfile="$tmp/show-refs.$whichoutput" (set -e exec >"$outputfile" - if test -d $tmp/git/$p.git; then - cd $tmp/git/$p.git + if test -d $dgitrepo; then + cd $dgitrepo git show-ref |sort fi) } @@ -128,8 +128,13 @@ t-worktree () { t-untar $troot/worktrees/${p}_$1 } -t-git () { +t-select-package () { p=$1 + dgitrepo=$tmp/git/$p.git +} + +t-git () { + t-select-package $1 v=$2 mkdir -p $tmp/git local gs=$troot/git-srcs/${p}_$v.git @@ -141,17 +146,21 @@ t-git-none () { (set -e; cd $tmp/git; tar xf $troot/git-template.tar) } +t-git-merge-base () { + git merge-base $1 $2 || test $? = 1 +} + t-has-ancestor () { local now=`git rev-parse HEAD` local ancestor=`git rev-parse $1^{}` - local mbase=`git merge-base $ancestor $now` + local mbase=`t-git-merge-base $ancestor $now` if [ x$mbase != x$ancestor ]; then fail "not ff $ancestor..$now, $mbase != $ancestor" fi } t-prep-newpackage () { - p=$1 + t-select-package $1 v=$2 t-archive-none $p t-git-none @@ -165,7 +174,7 @@ t-prep-newpackage () { } t-archive-none () { - p=$1 + t-select-package $1 mkdir -p $tmp/aq $tmp/mirror/pool/main local suite=sid @@ -243,11 +252,11 @@ t-archive () { } t-git-dir-time-passes () { - touch -d 'last year' $tmp/git/$p.git + touch -d 'last year' $dgitrepo } t-git-dir-check () { - local gitdir=$tmp/git/$p.git + local gitdir=$dgitrepo case "$1" in enoent) if test -e "$gitdir"; then fail "$gitdir exists"; fi @@ -270,6 +279,7 @@ t-rm-dput-dropping () { t-dgit () { local dgit=${DGIT_TEST-dgit} + pwd : ' {{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{' $dgit --dgit=$dgit --dget:-u --dput:--config=$tmp/dput.cf \ @@ -326,6 +336,12 @@ t-git-get-ref () { ' } +t-ref-same-exact () { + local name="$1" + local 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` @@ -373,6 +389,15 @@ t-v-tag () { echo refs/tags/test-dummy/${v//\~/_} } +t-check-pushed-master () { + local 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` + if [ x$mbase = x$master ]; then fail "failed to ff master"; fi +} + t-pushed-good () { local branch=$1 t-ref-dsc-dgit @@ -383,10 +408,11 @@ t-pushed-good () { t-refs-notexist \ refs/heads/dgit/unstable \ refs/remotes/dgit/dgit/unstable - (set -e; cd $tmp/git/$p.git + (set -e; cd $dgitrepo t-refs-same \ refs/dgit/sid \ `t-v-tag` + ${t_check_pushed_master:- : NOT-DRS-NO-CHECK-PUSHED-MASTER} t-refs-notexist \ refs/dgit/unstable ) @@ -435,15 +461,6 @@ t-tstunt-parsechangelog () { t-tstunt dpkg-parsechangelog Dpkg/Changelog/Parse.pm } -t-prep-mergechangelogs () { - local b=merge.dpkg-mergechangelogs - git config $b.name 'debian/changelog merge driver' - git config $b.driver 'dpkg-mergechangelogs -m %O %A %B %A' - mkdir -p .git/info - echo >>.git/info/attributes \ - 'debian/changelog merge=dpkg-mergechangelogs' -} - t-ref-dsc-dgit () { local dsc=${p}_${v}.dsc local val=`t-822-field $tmp/incoming/$dsc Dgit` @@ -479,6 +496,9 @@ t-drs () { t-git-config dgit-distro.test-dummy.git-create true cp $troot/gnupg/{dd.gpg,dm.gpg,dm.txt} $tmp/. cp $troot/suites $tmp/. + cp $troot/suites $tmp/suites-master + + export t_check_pushed_master=t-check-pushed-master drs_dispatch=$tmp/distro=test-dummy mkdir $drs_dispatch @@ -488,7 +508,7 @@ t-drs () { fi ln -sf $tmp/git $drs_dispatch/repos - ln -sf $tmp/suites $tmp/dm.txt $drs_dispatch/ + ln -sf $tmp/suites $tmp/suites-master $tmp/dm.txt $drs_dispatch/ mkdir -p $drs_dispatch/keyrings ln -sf $tmp/dd.gpg $drs_dispatch/keyrings/debian-keyring.gpg ln -sf $tmp/dm.gpg $drs_dispatch/keyrings/debian-maintainers.gpg