chiark / gitweb /
Test suite: Break out t-incoming-dsc (nfc)
[dgit.git] / tests / lib
index 81accebf0f6f11d53639af725298416606102e33..216ec815daf68fd8ae128955a6a3efff8458a8f0 100644 (file)
--- a/tests/lib
+++ b/tests/lib
@@ -335,7 +335,7 @@ t-dgit () {
 {{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{'
        $dgit --dgit=$dgit --dget:-u --dput:--config=$tmp/dput.cf \
                -dtest-dummy $DGIT_TEST_OPTS $DGIT_TEST_DEBUG \
-               -k39B13D8A "$@"
+               -k39B13D8A $t_dgit_xopts "$@"
        : '}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
 '
 }
@@ -364,7 +364,7 @@ t-cloned-fetched-good () {
 }
 
 t-output () {
-       printf "%s\n" "$1" >$tmp/t.want
+       printf "%s${1:+\n}" "$1" >$tmp/t.want
        shift
        "$@" >$tmp/t.got
        diff $tmp/t.want $tmp/t.got
@@ -398,18 +398,22 @@ t-setup-done () {
 t-setup-import () {
        local setupname=$1
 
+       local setupsrc
+       local lock
        if [ "x$tmpbase" = x ]; then
                # ADTTMP was set on entry to tests/lib, so we
                # are not sharing tmp area between tests
                setupsrc="$tmp"
+               lock="$tmp/.dummy.lock"
        else
                setupsrc="$tmpbase/$setupname"
+               lock="$setupsrc.lock"
        fi
 
        local simport="$setupsrc/IMPORT"
 
        if ! [ -e "$simport" ]; then
-               with-lock-ex -w "$simport.lock" \
+               with-lock-ex -w "$lock" \
                xargs -0 -a $tmp/.save-env \
                bash -xec '
                        cd "$1"; shift
@@ -504,6 +508,28 @@ t-v-tag () {
        echo refs/tags/$tagpfx/${v//\~/_}
 }
 
+t-format-ref () {
+       git log -n1 --pretty=format:"$1" "$2"
+}
+
+t-sametree-parent () {
+       local ref=$1
+       local parent
+       local 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")
+                       if [ "x$ptree" = "x$ctree" ]; then
+                               psame+=" $parent"
+                       fi
+               done
+               case "$psame" in ""|" * *") break ;; esac
+               ref="${psame# }"
+       done
+       echo "$ref"
+}
+
 t-check-pushed-master () {
        local master=`t-git-get-ref refs/heads/master`
        if [ x$master = x$t_ref_val ]; then return; fi
@@ -516,9 +542,14 @@ t-check-pushed-master () {
 t-pushed-good () {
        local branch=$1
        local suite=${2:-sid}
+       t-refs-same \
+               refs/heads/$branch
+       t-pushed-good-core
+}
+       
+t-pushed-good-core () {
        t-ref-dsc-dgit
        t-refs-same \
-               refs/heads/$branch \
                `t-v-tag` \
                refs/remotes/dgit/dgit/$suite
        t-refs-notexist \
@@ -587,11 +618,16 @@ t-tstunt-parsechangelog () {
        t-tstunt dpkg-parsechangelog Dpkg/Changelog/Parse.pm
 }
 
-t-ref-dsc-dgit () {
+t-incoming-dsc () {
        local dsc=${p}_${v}.dsc
-       local val=`t-822-field $tmp/incoming/$dsc Dgit`
-       perl -e '$_=shift @ARGV; die "$dsc Dgit $_ ?" unless m/^\w+\b/;' "$val"
-       t-ref-same-val $dsc "$val"
+       incoming_dsc=$tmp/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"
+       t-ref-same-val $incoming_dsc "$val"
 }
 
 t-apply-diff () {
@@ -650,7 +686,7 @@ t-gbp-example-prep () {
 
 t-commit () {
        local msg=$1
-       v=${2:-1.$revision}
+       v=${2:-${majorv:-1}.$revision}
        dch -v$v --distribution ${3:-unstable} "$1"
        git add debian/changelog
        debcommit