t7004-tag: add version sort tests to show prerelease reordering issues

Version sort with prerelease reordering sometimes puts tagnames in the
wrong order, when the common part of two compared tagnames ends with
the leading character(s) of one or more configured prerelease
suffixes.  Add tests that demonstrate these issues.

The unrelated '--format should list tags as per format given' test
later uses tags matching the same prefix as the version sort tests,
thus was affected by the new tags added for the new tests in this
patch.  Change that test to perform its checks on a different set of
tags.

Signed-off-by: SZEDER Gábor <szeder.dev@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
SZEDER Gábor 2016-12-08 15:23:57 +01:00 committed by Junio C Hamano
parent 9ffda48f53
commit 0c1b4878de

View File

@ -1538,6 +1538,32 @@ test_expect_success 'reverse version sort with prerelease reordering' '
test_cmp expect actual
'
test_expect_failure 'version sort with prerelease reordering and common leading character' '
test_config versionsort.prereleaseSuffix -before &&
git tag foo1.7-before1 &&
git tag foo1.7 &&
git tag foo1.7-after1 &&
git tag -l --sort=version:refname "foo1.7*" >actual &&
cat >expect <<-\EOF &&
foo1.7-before1
foo1.7
foo1.7-after1
EOF
test_cmp expect actual
'
test_expect_failure 'version sort with prerelease reordering, multiple suffixes and common leading character' '
test_config versionsort.prereleaseSuffix -before &&
git config --add versionsort.prereleaseSuffix -after &&
git tag -l --sort=version:refname "foo1.7*" >actual &&
cat >expect <<-\EOF &&
foo1.7-before1
foo1.7-after1
foo1.7
EOF
test_cmp expect actual
'
run_with_limited_stack () {
(ulimit -s 128 && "$@")
}
@ -1566,13 +1592,11 @@ EOF"
test_expect_success '--format should list tags as per format given' '
cat >expect <<-\EOF &&
refname : refs/tags/foo1.10
refname : refs/tags/foo1.3
refname : refs/tags/foo1.6
refname : refs/tags/foo1.6-rc1
refname : refs/tags/foo1.6-rc2
refname : refs/tags/v1.0
refname : refs/tags/v1.0.1
refname : refs/tags/v1.1.3
EOF
git tag -l --format="refname : %(refname)" "foo*" >actual &&
git tag -l --format="refname : %(refname)" "v1*" >actual &&
test_cmp expect actual
'