Skip to content

Commit

Permalink
Merge pull request #29 from barseghyanartur/bugfix/28-Ensure-correct-…
Browse files Browse the repository at this point in the history
…order-of-releases

Bugfix/28 ensure correct order of releases
  • Loading branch information
barseghyanartur committed Dec 26, 2019
2 parents b6793f1 + 8260027 commit 0506951
Show file tree
Hide file tree
Showing 3 changed files with 32 additions and 18 deletions.
8 changes: 4 additions & 4 deletions src/matyan/tests/test_commands.py
Original file line number Diff line number Diff line change
Expand Up @@ -130,7 +130,7 @@ def test_json_changelog_command_show_releases(self):
'json-changelog',
'--show-releases'
]).strip().decode()
self.assertEqual(res, self.json_show_releases_out)
self.assertEqual(str(res), self.json_show_releases_out)
return res

@log_info
Expand All @@ -142,7 +142,7 @@ def test_json_changelog_show_releases_latest_release(self):
'--latest-release'
]).strip().decode()
self.assertEqual(
res,
str(res),
self.json_latest_release_show_releases_out
)
return res
Expand All @@ -156,7 +156,7 @@ def test_json_changelog_show_releases_headings_only(self):
'--headings-only'
]).strip().decode()
self.assertEqual(
res,
str(res),
self.json_show_releases_headings_only_out
)
return res
Expand All @@ -169,7 +169,7 @@ def test_json_changelog_headings_only(self):
'--headings-only'
]).strip().decode()
self.assertEqual(
res,
str(res),
self.json_headings_only_out
)
return res
Expand Down
6 changes: 3 additions & 3 deletions src/matyan/tests/test_core.py
Original file line number Diff line number Diff line change
Expand Up @@ -163,7 +163,7 @@ def test_json_changelog_show_releases(self):
show_releases=True,
path=self.test_dir
)
self.assertEqual(str(res), self.json_show_releases_out)
self.assertEqual(str(dict(res)), self.json_show_releases_out)
return res

@log_info
Expand All @@ -176,7 +176,7 @@ def test_json_changelog_latest_release_show_releases(self):
path=self.test_dir
)
self.assertEqual(
str(res),
str(dict(res)),
self.json_latest_release_show_releases_out
)
return res
Expand All @@ -191,7 +191,7 @@ def test_json_changelog_show_releases_headings_only(self):
path=self.test_dir
)
self.assertEqual(
str(res),
str(dict(res)),
self.json_show_releases_headings_only_out
)
return res
Expand Down
36 changes: 25 additions & 11 deletions src/matyan/utils.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import argparse
from collections import OrderedDict
import copy
import json
import os
Expand Down Expand Up @@ -451,7 +452,10 @@ def prepare_releases_changelog(
"""
logs = get_logs(between=between, path=path)
settings = get_settings()
releases_tree = {}
# releases_tree = {}
releases_tree = OrderedDict(
{_t: {} for _, _t in logs['COMMIT_TAGS'].items()}
)

cur_branch = None
cur_branch_type = None
Expand Down Expand Up @@ -687,6 +691,9 @@ def prepare_releases_changelog(
'title': commit_message,
}

if UNRELEASED in releases_tree:
releases_tree.move_to_end(UNRELEASED, last=False)

if unreleased_only:
return {UNRELEASED: releases_tree.get(UNRELEASED, {})}

Expand Down Expand Up @@ -740,11 +747,13 @@ def json_changelog(between: str = None,
fetch_title: bool = False,
fetch_description: bool = False,
path: str = None):
throw_tag = None
if latest_release:
latest_two_releases = get_latest_releases(limit=2, path=path)
latest_two_releases = latest_two_releases[::-1]
if len(latest_two_releases):
between = '..'.join(latest_two_releases)
throw_tag = latest_two_releases[0]

if not show_releases:
tree = prepare_changelog(
Expand All @@ -761,6 +770,8 @@ def json_changelog(between: str = None,
headings_only=headings_only,
path=path
)
if latest_release:
releases_tree.pop(throw_tag, None)
return releases_tree


Expand Down Expand Up @@ -825,17 +836,16 @@ def json_changelog_cli() -> Type[None]:
fetch_title = args.fetch_title
fetch_description = args.fetch_description

print(
json_changelog(
between=between,
include_other=include_other,
show_releases=show_releases,
latest_release=latest_release,
headings_only=headings_only,
fetch_title=fetch_title,
fetch_description=fetch_description
)
changelog = json_changelog(
between=between,
include_other=include_other,
show_releases=show_releases,
latest_release=latest_release,
headings_only=headings_only,
fetch_title=fetch_title,
fetch_description=fetch_description
)
print(dict(changelog))


def generate_changelog(between: str = None,
Expand All @@ -859,11 +869,13 @@ def generate_changelog(between: str = None,
# "--show-latest-release can't be used in combination with specific"
# "tags/commits/branches range."
# )
throw_tag = None
if latest_release:
latest_two_releases = get_latest_releases(limit=2, path=path)
latest_two_releases = latest_two_releases[::-1]
if len(latest_two_releases):
between = '..'.join(latest_two_releases)
throw_tag = latest_two_releases[0]

renderer = renderer_cls()

Expand Down Expand Up @@ -894,6 +906,8 @@ def generate_changelog(between: str = None,
fetch_description=fetch_description,
path=path
)
if latest_release:
releases_tree.pop(throw_tag, None)

return renderer.render_releases_changelog(
releases_tree=releases_tree,
Expand Down

0 comments on commit 0506951

Please sign in to comment.