test-lib functions: add an --annotated option to "test_commit"

Add an --annotated option to test_commit to create annotated tags. The
tag will share the same message as the commit, and we'll call
test_tick before creating it (unless --notick) is provided.

There's quite a few tests that could be simplified with this
construct. I've picked one to convert in this change as a
demonstration.

Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Ævar Arnfjörð Bjarmason 2021-05-10 16:19:04 +02:00 committed by Junio C Hamano
parent 5144219b7d
commit 6cf8d96fa2
2 changed files with 24 additions and 9 deletions

View file

@ -7,11 +7,9 @@ export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
. ./test-lib.sh
test_expect_success setup '
test_commit A &&
git tag -f -a -m "annotated A" A &&
test_commit --annotate A &&
git checkout -b side &&
test_commit B &&
git tag -f -a -m "annotated B" B &&
test_commit --annotate B &&
git checkout main &&
test_commit C &&
git branch B A^0

View file

@ -179,6 +179,10 @@ debug () {
# Invoke "git commit" with --author <author>
# --no-tag
# Do not tag the resulting commit
# --annotate
# Create an annotated tag with "--annotate -m <message>". Calls
# test_tick between making the commit and tag, unless --notick
# is given.
#
# This will commit a file with the given contents and the given commit
# message, and tag the resulting commit with the given tag name.
@ -191,7 +195,7 @@ test_commit () {
author= &&
signoff= &&
indir= &&
no_tag= &&
tag=light &&
while test $# != 0
do
case "$1" in
@ -219,7 +223,10 @@ test_commit () {
shift
;;
--no-tag)
no_tag=yes
tag=none
;;
--annotate)
tag=annotate
;;
*)
break
@ -243,10 +250,20 @@ test_commit () {
git ${indir:+ -C "$indir"} commit \
${author:+ --author "$author"} \
$signoff -m "$1" &&
if test -z "$no_tag"
then
case "$tag" in
none)
;;
light)
git ${indir:+ -C "$indir"} tag "${4:-$1}"
fi
;;
annotate)
if test -z "$notick"
then
test_tick
fi &&
git ${indir:+ -C "$indir"} tag -a -m "$1" "${4:-$1}"
;;
esac
}
# Call test_merge with the arguments "<message> <commit>", where <commit>