X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=tests%2Ftests%2Fdrs-push-rejects;h=6bc9bff0b3b70f99a200d80df64dfd3fdba2cbca;hb=b65d27db012ce0dfcb15b1d1f143866a3cc56ae6;hp=438ba78729e1b15eee8c91b0b095d87719a55e57;hpb=af71b895a72a841eb15527f011395981c82ccad1;p=dgit.git diff --git a/tests/tests/drs-push-rejects b/tests/tests/drs-push-rejects index 438ba787..6bc9bff0 100755 --- a/tests/tests/drs-push-rejects +++ b/tests/tests/drs-push-rejects @@ -10,4 +10,69 @@ t-worktree drs cd $p -git push origin HEAD:refs/dgit/sid refs/tags/debian/3-2_dummy1 +mustfail () { + local wantmsg="$1"; shift + set +e + git push origin "$@" 2>&1 |tee $tmp/mustfail.txt + ps="${PIPESTATUS[*]}" + set -e + case $ps in + "0 0") fail "push unexpectedly succeeded: $*" ;; + *" 0") ;; + *) fail "tee failed" ;; + esac + if ! fgrep "$wantmsg" $tmp/mustfail.txt >/dev/null; then + fail "error message not found" + fi +} + +prep () { + local suite=$1 + local csuite=$2 + cp $tmp/masters/* $tmp/. + tag_signer='-u Senatus' + tag_message="$p release $version for $suite ($csuite) [dgit]" + tag_name=debian/$version + push_spec1="HEAD:refs/dgit/$csuite" + push_spec2="refs/tags/$tag_name" + push_spec="$push_spec1 $push_spec2" +} +mktag () { + git tag -f $tag_signer -m "$tag_message" $tag_name "$@" +} + +mkdir $tmp/masters +cp $tmp/d[dm].* $tmp/masters + +version=3-2_dummy1 + +prep unstable sid +tag_signer='-a' +mktag +mustfail 'missing signature' $push_spec + +prep unstable sid +tag_message='something' +mktag +mustfail 'tag message not in expected format' $push_spec + +prep unstable sid +mktag +mustfail 'sid != sponge' HEAD:refs/dgit/sponge $push_spec2 + +# fixme test --sig-policy-url string +# fixme cannot test reject "signature is not of type 00!"; + +prep unstable sid +git push origin $push_spec # succeeds +mktag +mustfail 'not replacing previously-pushed version' $push_spec + +git checkout v2 +version=3-2_dummy2 +prep unstable sid +tag_signer='-u Populus' +mktag +git push origin $push_spec # succeeds + +echo ok.