@@ -66,7 +66,7 @@ def test_generate_release_notes_latest_release_not_found(
6666 mock_pull_closed_with_rls_notes_101 .merged_at = mock_repo .created_at + timedelta (days = 2 )
6767 mock_pull_closed_with_rls_notes_102 .merged_at = mock_repo .created_at + timedelta (days = 7 )
6868
69- github_mock . get_repo (). get_latest_release . return_value = None
69+ mocker . patch ( "release_notes_generator.generator.ReleaseNotesGenerator.get_latest_release" , return_value = None )
7070
7171 mock_rate_limit = mocker .Mock ()
7272 mock_rate_limit .core .remaining = 1000
@@ -108,9 +108,9 @@ def test_generate_release_notes_latest_release_found_by_created_at(
108108 mock_pull_closed_with_rls_notes_101 .merged_at = mock_repo .created_at + timedelta (days = 2 )
109109 mock_pull_closed_with_rls_notes_102 .merged_at = mock_repo .created_at + timedelta (days = 7 )
110110
111- github_mock .get_repo ().get_latest_release .return_value = mock_git_release
112111 mock_git_release .created_at = mock_repo .created_at + timedelta (days = 5 )
113112 mock_git_release .published_at = mock_repo .created_at + timedelta (days = 5 )
113+ mocker .patch ("release_notes_generator.generator.ReleaseNotesGenerator.get_latest_release" , return_value = mock_git_release )
114114
115115 mock_rate_limit = mocker .Mock ()
116116 mock_rate_limit .core .remaining = 1000
@@ -156,9 +156,9 @@ def test_generate_release_notes_latest_release_found_by_published_at(
156156 mock_pull_closed_with_rls_notes_101 .merged_at = mock_repo .created_at + timedelta (days = 2 )
157157 mock_pull_closed_with_rls_notes_102 .merged_at = mock_repo .created_at + timedelta (days = 7 )
158158
159- github_mock .get_repo ().get_latest_release .return_value = mock_git_release
160159 mock_git_release .created_at = mock_repo .created_at + timedelta (days = 5 )
161160 mock_git_release .published_at = mock_repo .created_at + timedelta (days = 5 )
161+ mocker .patch ("release_notes_generator.generator.ReleaseNotesGenerator.get_latest_release" , return_value = mock_git_release )
162162
163163 mock_rate_limit = mocker .Mock ()
164164 mock_rate_limit .core .remaining = 1000
@@ -201,6 +201,102 @@ def test_get_latest_release_from_tag_name_defined_no_release(mocker, mock_repo):
201201 assert ('Latest release not found for received tag %s. Ending!' , '' ) == mock_log_info .call_args_list [1 ][0 ]
202202
203203
204+ def test_get_latest_release_from_tag_name_not_defined_no_release (mocker , mock_repo ):
205+ mocker .patch ("release_notes_generator.action_inputs.ActionInputs.is_from_tag_name_defined" , return_value = False )
206+ mock_log_info = mocker .patch ("release_notes_generator.generator.logger.info" )
207+
208+ github_mock = mocker .Mock (spec = Github )
209+ github_mock .get_repo .return_value = mock_repo
210+
211+ mock_repo .get_releases .return_value = []
212+
213+ mock_rate_limit = mocker .Mock ()
214+ mock_rate_limit .core .remaining = 1000
215+ github_mock .get_rate_limit .return_value = mock_rate_limit
216+
217+ release_notes_generator = ReleaseNotesGenerator (github_mock , CustomChapters (print_empty_chapters = True ))
218+
219+ latest_release = release_notes_generator .get_latest_release (mock_repo )
220+
221+ assert latest_release is None
222+ assert mock_log_info .called_with (2 )
223+ assert ('Getting latest release by semantic ordering (could not be the last one by time).' ,) == mock_log_info .call_args_list [0 ][0 ]
224+ assert ('Latest release not found for %s. 1st release for repository!' , 'org/repo' ) == mock_log_info .call_args_list [1 ][0 ]
225+
226+
227+ def test_get_latest_release_from_tag_name_not_defined_2_releases (mocker , mock_repo , mock_git_releases ):
228+ mocker .patch ("release_notes_generator.action_inputs.ActionInputs.is_from_tag_name_defined" , return_value = False )
229+ mock_log_info = mocker .patch ("release_notes_generator.generator.logger.info" )
230+
231+ github_mock = mocker .Mock (spec = Github )
232+ github_mock .get_repo .return_value = mock_repo
233+
234+ mock_repo .get_releases .return_value = mock_git_releases
235+
236+ mock_rate_limit = mocker .Mock ()
237+ mock_rate_limit .core .remaining = 1000
238+ github_mock .get_rate_limit .return_value = mock_rate_limit
239+
240+ release_notes_generator = ReleaseNotesGenerator (github_mock , CustomChapters (print_empty_chapters = True ))
241+
242+ latest_release = release_notes_generator .get_latest_release (mock_repo )
243+
244+ assert latest_release is not None
245+ assert ('Getting latest release by semantic ordering (could not be the last one by time).' ,) == mock_log_info .call_args_list [0 ][0 ]
246+
247+
248+ def test_get_latest_release_from_tag_name_not_defined_2_releases_value_error (mocker , mock_repo , mock_git_releases ):
249+ mocker .patch ("release_notes_generator.action_inputs.ActionInputs.is_from_tag_name_defined" , return_value = False )
250+ mock_log_info = mocker .patch ("release_notes_generator.generator.logger.info" )
251+ mock_log_debug = mocker .patch ("release_notes_generator.generator.logger.debug" )
252+
253+ github_mock = mocker .Mock (spec = Github )
254+ github_mock .get_repo .return_value = mock_repo
255+
256+ mock_repo .get_releases .return_value = mock_git_releases
257+
258+ mock_rate_limit = mocker .Mock ()
259+ mock_rate_limit .core .remaining = 1000
260+ github_mock .get_rate_limit .return_value = mock_rate_limit
261+
262+ release_notes_generator = ReleaseNotesGenerator (github_mock , CustomChapters (print_empty_chapters = True ))
263+ mocker .patch ("semver.Version.parse" , side_effect = ValueError )
264+
265+ latest_release = release_notes_generator .get_latest_release (mock_repo )
266+
267+ assert latest_release is None
268+ assert ('Getting latest release by semantic ordering (could not be the last one by time).' ,) == mock_log_info .call_args_list [0 ][0 ]
269+ assert ('Latest release not found for %s. 1st release for repository!' , 'org/repo' ) == mock_log_info .call_args_list [1 ][0 ]
270+ assert ('Skipping invalid value of version tag: %s' , 'v1.0.0' ) == mock_log_debug .call_args_list [0 ][0 ]
271+ assert ('Skipping invalid value of version tag: %s' , 'v2.0.0' ) == mock_log_debug .call_args_list [1 ][0 ]
272+
273+
274+ def test_get_latest_release_from_tag_name_not_defined_2_releases_type_error (mocker , mock_repo , mock_git_releases ):
275+ mocker .patch ("release_notes_generator.action_inputs.ActionInputs.is_from_tag_name_defined" , return_value = False )
276+ mock_log_info = mocker .patch ("release_notes_generator.generator.logger.info" )
277+ mock_log_debug = mocker .patch ("release_notes_generator.generator.logger.debug" )
278+
279+ github_mock = mocker .Mock (spec = Github )
280+ github_mock .get_repo .return_value = mock_repo
281+
282+ mock_repo .get_releases .return_value = mock_git_releases
283+
284+ mock_rate_limit = mocker .Mock ()
285+ mock_rate_limit .core .remaining = 1000
286+ github_mock .get_rate_limit .return_value = mock_rate_limit
287+
288+ release_notes_generator = ReleaseNotesGenerator (github_mock , CustomChapters (print_empty_chapters = True ))
289+ mocker .patch ("semver.Version.parse" , side_effect = TypeError )
290+
291+ latest_release = release_notes_generator .get_latest_release (mock_repo )
292+
293+ assert latest_release is None
294+ assert ('Getting latest release by semantic ordering (could not be the last one by time).' ,) == mock_log_info .call_args_list [0 ][0 ]
295+ assert ('Latest release not found for %s. 1st release for repository!' , 'org/repo' ) == mock_log_info .call_args_list [1 ][0 ]
296+ assert ('Skipping invalid type of version tag: %s' , 'v1.0.0' ) == mock_log_debug .call_args_list [0 ][0 ]
297+ assert ('Skipping invalid type of version tag: %s' , 'v2.0.0' ) == mock_log_debug .call_args_list [1 ][0 ]
298+
299+
204300def test_get_latest_release_from_tag_name_defined_release_exists (mocker , mock_repo ):
205301 mocker .patch ("release_notes_generator.action_inputs.ActionInputs.is_from_tag_name_defined" , return_value = True )
206302 mock_exit = mocker .patch ("sys.exit" )
0 commit comments