Improve the tests added in dbfeddb12e ("push: require force for refs under refs/tags/", 2012-11-29) to assert that the same behavior applies various other combinations of command-line option and refspecs. Supplying either "+" in refspec or "--force" is sufficient to clobber the reference. With --no-force we still pay attention to "+" in the refspec, and vice-versa with clobbering kicking in if there's no "+" in the refspec but "+" is given. This is consistent with how refspecs work for branches, where either "+" or "--force" will enable clobbering, with neither taking priority over the other. Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@xxxxxxxxx> --- t/t5516-fetch-push.sh | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/t/t5516-fetch-push.sh b/t/t5516-fetch-push.sh index fbc44273d9..c7b0d2ba00 100755 --- a/t/t5516-fetch-push.sh +++ b/t/t5516-fetch-push.sh @@ -965,7 +965,7 @@ test_expect_success 'push into aliased refs (inconsistent)' ' ) ' -test_expect_success 'push requires --force to update lightweight tag' ' +test_expect_success 'force pushing required to update lightweight tag' ' mk_test testrepo heads/master && mk_child testrepo child1 && mk_child testrepo child2 && @@ -981,7 +981,25 @@ test_expect_success 'push requires --force to update lightweight tag' ' git push --force ../child2 testTag && git tag -f testTag HEAD~ && test_must_fail git push ../child2 testTag && - git push --force ../child2 testTag + git push --force ../child2 testTag && + + # Clobbering without + in refspec needs --force + git tag -f testTag && + test_must_fail git push ../child2 "refs/tags/*:refs/tags/*" && + git push --force ../child2 "refs/tags/*:refs/tags/*" && + + # Clobbering with + in refspec does not need --force + git tag -f testTag HEAD~ && + git push ../child2 "+refs/tags/*:refs/tags/*" && + + # Clobbering with --no-force still obeys + in refspec + git tag -f testTag && + git push --no-force ../child2 "+refs/tags/*:refs/tags/*" && + + # Clobbering with/without --force and "tag <name>" format + git tag -f testTag HEAD~ && + test_must_fail git push ../child2 tag testTag && + git push --force ../child2 tag testTag ) ' -- 2.18.0.345.g5c9ce644c3