mirror of
https://gitlab.com/fdroid/fdroidserver.git
synced 2024-11-04 22:40:12 +01:00
Merge branch 'tag_sort_version' into 'master'
latesttags revert to git log and fix comma handling See merge request fdroid/fdroidserver!960
This commit is contained in:
commit
188e163b1a
@ -1171,11 +1171,33 @@ class vcs_git(vcs):
|
||||
p = FDroidPopen(['git', 'tag'], cwd=self.local, output=False)
|
||||
return p.output.splitlines()
|
||||
|
||||
tag_format = re.compile(r'tag: ([^) ]*)')
|
||||
|
||||
def latesttags(self):
|
||||
"""Returns a list of latest tags
|
||||
the definition is a little blurry here, Android does not care for the
|
||||
version name of an app as normally used as the tag name so versions do
|
||||
not need to follow strverscmp() or similar. Also they can be rather
|
||||
arbitrary so git tag --sort=-version:refname does not work. On the other side
|
||||
sorting them by creation date, i.e. git tag --sort=-authordate does not
|
||||
work either as there are a lot of repos where older tags were created
|
||||
later.
|
||||
|
||||
So git log preserves the graph order and only sorts by date afterwards.
|
||||
This results in tags of beta versions being sorted earlier then the
|
||||
latest tag as long as they are part of the graph below the latest tag
|
||||
or are created earlier.
|
||||
"""
|
||||
self.checkrepo()
|
||||
p = FDroidPopen(['git', 'tag', '--sort=-authordate'],
|
||||
p = FDroidPopen(['git', 'log', '--tags',
|
||||
'--simplify-by-decoration', '--pretty=format:%d'],
|
||||
cwd=self.local, output=False)
|
||||
return p.output.splitlines()
|
||||
tags = []
|
||||
for line in p.output.splitlines():
|
||||
for entry in line.split(', '):
|
||||
for tag in self.tag_format.findall(entry):
|
||||
tags.append(tag)
|
||||
return tags
|
||||
|
||||
|
||||
class vcs_gitsvn(vcs):
|
||||
|
@ -2062,7 +2062,15 @@ class CommonTest(unittest.TestCase):
|
||||
def test_vcs_git_latesttags(self):
|
||||
vcs = fdroidserver.common.vcs_git(None, None)
|
||||
popenmock = mock.Mock()
|
||||
popenmock.output = "8.9.5\n8.9.4\n8.6.3\n8,9,3"
|
||||
popenmock.output = """
|
||||
(HEAD, tag: 8.9.5, origin/master, origin/HEAD, master)
|
||||
(tag: 8.9.4)
|
||||
(tag: 8.9.3, tag: 8,9,3)
|
||||
(tag: 8.9.3b)
|
||||
(tag: awesome_release)
|
||||
(origin/feature/cast)
|
||||
(tag: 8.6.3)
|
||||
"""
|
||||
with mock.patch(
|
||||
'fdroidserver.common.FDroidPopen', lambda a, **b: popenmock
|
||||
) as _ignored, mock.patch(
|
||||
@ -2070,7 +2078,8 @@ class CommonTest(unittest.TestCase):
|
||||
) as _ignored:
|
||||
_ignored # silence the linters
|
||||
tags = vcs.latesttags()
|
||||
self.assertEqual(tags, ['8.9.5', '8.9.4', '8.6.3', '8,9,3'])
|
||||
self.assertEqual(tags, ['8.9.5', '8.9.4', '8.9.3', '8,9,3',
|
||||
'8.9.3b', 'awesome_release', '8.6.3'])
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
|
Loading…
Reference in New Issue
Block a user