The only thing out of the ordinary with git-describe is the --abbrev=0
special-case.

Signed-off-by: Ævar Arnfjörð Bjarmason <ava...@gmail.com>
---
 t/t0014-abbrev.sh | 25 +++++++++++++++++++++++++
 1 file changed, 25 insertions(+)

diff --git a/t/t0014-abbrev.sh b/t/t0014-abbrev.sh
index d8b060d922..645bcca1d1 100755
--- a/t/t0014-abbrev.sh
+++ b/t/t0014-abbrev.sh
@@ -16,6 +16,10 @@ nocaret() {
        sed 's/\^//'
 }
 
+sed_g_tr_d_n() {
+       sed 's/.*g//' | tr_d_n
+}
+
 test_expect_success 'setup' '
        test_commit A &&
        git tag -a -mannotated A.annotated &&
@@ -178,4 +182,25 @@ do
        "
 done
 
+test_expect_success 'describe core.abbrev and --abbrev special cases' '
+       # core.abbrev=0 behaves as usual...
+       test_must_fail git -c core.abbrev=0 describe &&
+
+       # ...but --abbrev=0 is special-cased to print the nearest tag,
+       # not fall back on "4" like git-log.
+       echo A.annotated >expected &&
+       git describe --abbrev=0 >actual &&
+       test_cmp expected actual
+'
+
+for i in $(test_seq 4 40)
+do
+       test_expect_success "describe core.abbrev=$i and --abbrev=$i" "
+               git -c core.abbrev=$i describe | sed_g_tr_d_n >describe &&
+               test_byte_count = $i describe &&
+               git describe --abbrev=$i | sed_g_tr_d_n >describe &&
+               test_byte_count = $i describe
+       "
+done
+
 test_done
-- 
2.17.0.290.gded63e768a

Reply via email to