Skip to content

Commit 57bc46d

Browse files
#117 - Already releases issue are returned from GitHub API (#118)
* #117 - Already releases issue are returned from GitHub API - Added new filtration logic for received issues from GH API. These issues should already be filtered, but there is an error. - Added new debug message for observing creation time of GH Releases.
1 parent 9275384 commit 57bc46d

File tree

2 files changed

+15
-3
lines changed

2 files changed

+15
-3
lines changed

release_notes_generator/generator.py

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -79,18 +79,27 @@ def generate(self) -> Optional[str]:
7979
rls = self._safe_call(repo.get_latest_release)()
8080
if rls is None:
8181
logger.info("Latest release not found for %s. 1st release for repository!", repo.full_name)
82+
else:
83+
logger.debug("RLS created_at: %s, published_at: %s", rls.created_at, rls.published_at)
8284

8385
# default is repository creation date if no releases OR created_at of latest release
8486
since = rls.created_at if rls else repo.created_at
8587
if rls and ActionInputs.get_published_at():
8688
since = rls.published_at
8789

88-
issues = self._safe_call(repo.get_issues)(state=ISSUE_STATE_ALL, since=since)
90+
# get all issues, pulls and commits, and then reduce them by the latest release since time
91+
issues = issues_all = self._safe_call(repo.get_issues)(state=ISSUE_STATE_ALL, since=since)
8992
pulls = pulls_all = self._safe_call(repo.get_pulls)(state="closed")
9093
commits = commits_all = list(self._safe_call(repo.get_commits)())
9194

9295
if rls is not None:
93-
logger.info("Count of issues: %d", len(list(issues)))
96+
logger.info("Starting issue, prs and commit reduction by the latest release since time.")
97+
98+
# filter out closed Issues before the date
99+
issues = list(
100+
filter(lambda issue: issue.closed_at is not None and issue.closed_at > since, list(issues_all))
101+
)
102+
logger.debug("Count of issues reduced from %d to %d", len(list(issues_all)), len(issues))
94103

95104
# filter out merged PRs and commits before the date
96105
pulls = list(filter(lambda pull: pull.merged_at is not None and pull.merged_at > since, list(pulls_all)))

tests/test_release_notes_generator.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@ def test_generate_release_notes_latest_release_not_found(
6161

6262
mock_issue_closed.created_at = mock_repo.created_at + timedelta(days=2)
6363
mock_issue_closed_i1_bug.created_at = mock_repo.created_at + timedelta(days=7)
64+
mock_issue_closed_i1_bug.closed_at = mock_repo.created_at + timedelta(days=6)
6465
mock_pull_closed_with_rls_notes_101.merged_at = mock_repo.created_at + timedelta(days=2)
6566
mock_pull_closed_with_rls_notes_102.merged_at = mock_repo.created_at + timedelta(days=7)
6667

@@ -94,13 +95,15 @@ def test_generate_release_notes_latest_release_found_by_created_at(
9495
github_mock = mocker.Mock(spec=Github)
9596
github_mock.get_repo.return_value = mock_repo
9697
mock_repo.created_at = datetime.now() - timedelta(days=10)
98+
mock_repo.published_at = datetime.now() - timedelta(days=9)
9799

98100
mock_repo.get_issues.return_value = [mock_issue_closed_i1_bug]
99101
mock_repo.get_pulls.return_value = [mock_pull_closed_with_rls_notes_101, mock_pull_closed_with_rls_notes_102]
100102
mock_repo.get_commits.return_value = [mock_commit]
101103
mock_commit.commit.author.date = mock_repo.created_at + timedelta(days=1)
102104

103105
mock_issue_closed_i1_bug.created_at = mock_repo.created_at + timedelta(days=7)
106+
mock_issue_closed_i1_bug.closed_at = mock_repo.created_at + timedelta(days=6)
104107
mock_pull_closed_with_rls_notes_101.merged_at = mock_repo.created_at + timedelta(days=2)
105108
mock_pull_closed_with_rls_notes_102.merged_at = mock_repo.created_at + timedelta(days=7)
106109

@@ -148,7 +151,7 @@ def test_generate_release_notes_latest_release_found_by_published_at(
148151
mock_commit.commit.author.date = mock_repo.created_at + timedelta(days=1)
149152

150153
mock_issue_closed_i1_bug.created_at = mock_repo.created_at + timedelta(days=7)
151-
mock_issue_closed_i1_bug.published_at = mock_repo.created_at + timedelta(days=8)
154+
mock_issue_closed_i1_bug.closed_at = mock_repo.created_at + timedelta(days=8)
152155
mock_pull_closed_with_rls_notes_101.merged_at = mock_repo.created_at + timedelta(days=2)
153156
mock_pull_closed_with_rls_notes_102.merged_at = mock_repo.created_at + timedelta(days=7)
154157

0 commit comments

Comments
 (0)