[PATCH v2] t4205: correctly test %(describe:abbrev=...)
- From
Kousik Sanagavarapu <five231003@gmail.com>
- Date
- Jun 29, 2023, 13:18 UTC
- Message-ID
- <20230629133841.18784-2-five231003@gmail.com>
- In-Reply-To
- <20230628181753.10384-1-five231003@gmail.com>
The pretty format %(describe:abbrev=<number>) tells describe to use at least <number> digits of the oid to generate the human-readable format of the commit-ish.
There are three things to test here:
- Check that we can describe a commit that is not tagged (that is,
for example our HEAD is at least one commit ahead of some reachable
commit which is tagged) with at least <number> digits of the oid
being used for describing it. - Check that when using such a commit-ish, we always use at least
<number> digits of the oid to describe it. - Check that we can describe a tag. This just gives the name of the
tag irrespective of abbrev (abbrev doesn't make sense here).Do this, instead of the current test which only tests the last case.
Helped-by: Junio C Hamano <gitster@pobox.com> Mentored-by: Christian Couder <christian.couder@gmail.com> Mentored-by: Hariom Verma <hariom18599@gmail.com> Signed-off-by: Kousik Sanagavarapu <five231003@gmail.com> ---
Changes since v1: - Changed the log message - Added things to be tested as commented by Junio
Range-diff vs v1:
1: 2c10de6c11 ! 1: 76c3e38033 t4205: correctly test
%(describe:abbrev=...)
@@ Metadata
## Commit message ##
t4205: correctly test %(describe:abbrev=...)
- The pretty format %(describe:abbrev=<number>) tells describe to
use only
- <number> characters of the oid to generate the human-readable
format of
- the commit-ish.
+ The pretty format %(describe:abbrev=<number>) tells describe to
use
+ at least <number> digits of the oid to generate the
human-readable
+ format of the commit-ish.
- This is not apparent in the test for %(describe:abbrev=...)
because we
- directly tag HEAD and use that, in which case the
human-readable format
- is just the tag name. So, create a new commit and use that
instead.
+ There are three things to test here:
+ - Check that we can describe a commit that is not tagged
(that is,
+ for example our HEAD is at least one commit ahead of some
reachable
+ commit which is tagged) with at least <number> digits of
the oid
+ being used for describing it.
+ - Check that when using such a commit-ish, we always use at
least
+ <number> digits of the oid to describe it.
+
+ - Check that we can describe a tag. This just gives the name
of the
+ tag irrespective of abbrev (abbrev doesn't make sense
here).
+
+ Do this, instead of the current test which only tests the last
case.
+
+ Helped-by: Junio C Hamano <gitster@pobox.com>
Mentored-by: Christian Couder <christian.couder@gmail.com>
Mentored-by: Hariom Verma <hariom18599@gmail.com>
Signed-off-by: Kousik Sanagavarapu <five231003@gmail.com>
## t/t4205-log-pretty-formats.sh ##
@@ t/t4205-log-pretty-formats.sh: test_expect_success
'%(describe:tags) vs git describe --tags' '
- '
test_expect_success '%(describe:abbrev=...) vs git describe
--abbrev=...' '
-- test_when_finished "git tag -d tagname" &&
-- git tag -a -m tagged tagname &&
+ test_when_finished "git tag -d tagname" &&
++
++ # Case 1: We have commits between HEAD and the most recent tag
++ # reachable from it
+ test_commit --no-tag file &&
++ git describe --abbrev=15 >expect &&
++ git log -1 --format="%(describe:abbrev=15)" >actual &&
++ test_cmp expect actual &&
++
++ # Make sure the hash used is at least 15 digits long
++ sed -e "s/^.*-g\([0-9a-f]*\)$/\1/" <actual >hexpart &&
++ test 16 -le $(wc -c <hexpart) &&
++
++ # Case 2: We have a tag at HEAD, describe directly gives the
++ # name of the tag
+ git tag -a -m tagged tagname &&
git describe --abbrev=15 >expect &&
git log -1 --format="%(describe:abbrev=15)" >actual &&
- test_cmp expect actual
+- test_cmp expect actual
++ test_cmp expect actual &&
++ test tagname = $(cat actual)
+ '
+
+ test_expect_success 'log --pretty with space stealing' 't/t4205-log-pretty-formats.sh | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-)
diff --git a/t/t4205-log-pretty-formats.sh b/t/t4205-log-pretty-formats.sh index 4cf8a77667..dd9035aa38 100755 --- a/t/t4205-log-pretty-formats.sh +++ b/t/t4205-log-pretty-formats.sh @@ -1012,10 +1012,25 @@ test_expect_success '%(describe:tags) vs git describe --tags' ' test_expect_success '%(describe:abbrev=...) vs git describe --abbrev=...' ' test_when_finished "git tag -d tagname" && + + # Case 1: We have commits between HEAD and the most recent tag + # reachable from it + test_commit --no-tag file && + git describe --abbrev=15 >expect && + git log -1 --format="%(describe:abbrev=15)" >actual && + test_cmp expect actual && + + # Make sure the hash used is at least 15 digits long + sed -e "s/^.*-g\([0-9a-f]*\)$/\1/" <actual >hexpart && + test 16 -le $(wc -c <hexpart) && + + # Case 2: We have a tag at HEAD, describe directly gives the + # name of the tag git tag -a -m tagged tagname && git describe --abbrev=15 >expect && git log -1 --format="%(describe:abbrev=15)" >actual && - test_cmp expect actual + test_cmp expect actual && + test tagname = $(cat actual) ' test_expect_success 'log --pretty with space stealing' '
-- 2.41.0.29.g8148156d44.dirty