X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=tests%2Ftests%2Fdrs-push-rejects;h=67e0dfbea2c908355d020f8178f25cfa11d2a34a;hb=641add18265477ae53c0b162f6f6834e3621f0a4;hp=6098da79a0cd0da4a685dc1210d0fdeed5af5116;hpb=cdd43051c739c4157175ede1bdd1a54c9d2a7e8d;p=dgit.git diff --git a/tests/tests/drs-push-rejects b/tests/tests/drs-push-rejects index 6098da79..67e0dfbe 100755 --- a/tests/tests/drs-push-rejects +++ b/tests/tests/drs-push-rejects @@ -10,8 +10,17 @@ t-worktree drs cd $p +reporefs () { + (set -e + if test -d $tmp/git/$p.git; then + cd $tmp/git/$p.git + git show-ref + fi) +} + mustfail () { local wantmsg="$1"; shift + reporefs >$tmp/show-refs.pre-push set +e git push origin "$@" 2>&1 |tee $tmp/mustfail.txt ps="${PIPESTATUS[*]}" @@ -24,6 +33,17 @@ mustfail () { if ! fgrep "$wantmsg" $tmp/mustfail.txt >/dev/null; then fail "error message not found" fi + reporefs >$tmp/show-refs.post-push + diff $tmp/show-refs.{pre,post}-push +} + +mustsucceed () { + reporefs >$tmp/show-refs.pre-push + git push origin "$@" + reporefs >$tmp/show-refs.post-push + if diff $tmp/show-refs.{pre,post}-push >$tmp/show-refs.diff; then + fail "no refs updated" + fi } prep () { @@ -32,7 +52,7 @@ prep () { cp $tmp/masters/* $tmp/. tag_signer='-u Senatus' tag_message="$p release $version for $suite ($csuite) [dgit]" - tag_name=debian/3-2_dummy1 + tag_name=debian/$version push_spec1="HEAD:refs/dgit/$csuite" push_spec2="refs/tags/$tag_name" push_spec="$push_spec1 $push_spec2" @@ -58,16 +78,51 @@ 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!"; -git push origin $push_spec +prep unstable sid +mktag +mustfail 'push is missing tag ref update' $push_spec1 +mustfail 'push is missing head ref update' $push_spec2 +mustfail 'pushing unexpected ref' $push_spec HEAD:refs/wombat +mustfail 'pushing multiple heads' $push_spec HEAD:refs/dgit/wombat +mustfail 'pushing multiple tags' $push_spec HEAD:refs/tags/debian/wombat +prep unstable sid mktag +cp $tmp/dm.gpg $tmp/dd.gpg +mustfail 'key not found in keyrings' $push_spec +prep unstable sid +mustsucceed $push_spec # succeeds +mktag mustfail 'not replacing previously-pushed version' $push_spec +prep_dm_mangle () { + prep unstable sid + perl -i.bak -pe ' + next unless m/^fingerprint: 3A82860837A0CD32/i../^$/; + ' -e "$1" $tmp/dm.txt + tag_signer='-u Populus' + mktag +} + +git checkout v2 +version=3-2_dummy2 + +prep_dm_mangle 's/allow:/asponge:/i' +mustfail 'missing Allow section in permission' $push_spec + +prep_dm_mangle 's/\bpari-extra\b/sponge/i' +mustfail "package $p not allowed for key" $push_spec + +prep_dm_mangle 'y/0-9/5-90-4/ if m/^fingerprint:/i' +mustfail "not in permissions list although in keyring" $push_spec + +prep_dm_mangle '' +mustsucceed $push_spec # succeeds + echo ok.