@@ -66,7 +66,7 @@ def test_generate_release_notes_latest_release_not_found(
66
66
mock_pull_closed_with_rls_notes_101 .merged_at = mock_repo .created_at + timedelta (days = 2 )
67
67
mock_pull_closed_with_rls_notes_102 .merged_at = mock_repo .created_at + timedelta (days = 7 )
68
68
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 )
70
70
71
71
mock_rate_limit = mocker .Mock ()
72
72
mock_rate_limit .core .remaining = 1000
@@ -107,9 +107,9 @@ def test_generate_release_notes_latest_release_found_by_created_at(
107
107
mock_pull_closed_with_rls_notes_101 .merged_at = mock_repo .created_at + timedelta (days = 2 )
108
108
mock_pull_closed_with_rls_notes_102 .merged_at = mock_repo .created_at + timedelta (days = 7 )
109
109
110
- github_mock .get_repo ().get_latest_release .return_value = mock_git_release
111
110
mock_git_release .created_at = mock_repo .created_at + timedelta (days = 5 )
112
111
mock_git_release .published_at = mock_repo .created_at + timedelta (days = 5 )
112
+ mocker .patch ("release_notes_generator.generator.ReleaseNotesGenerator.get_latest_release" , return_value = mock_git_release )
113
113
114
114
mock_rate_limit = mocker .Mock ()
115
115
mock_rate_limit .core .remaining = 1000
@@ -158,6 +158,7 @@ def test_generate_release_notes_latest_release_found_by_published_at(
158
158
github_mock .get_repo ().get_latest_release .return_value = mock_git_release
159
159
mock_git_release .created_at = mock_repo .created_at + timedelta (days = 5 )
160
160
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 )
161
162
162
163
mock_rate_limit = mocker .Mock ()
163
164
mock_rate_limit .core .remaining = 1000
@@ -223,3 +224,99 @@ def test_get_latest_release_from_tag_name_defined_release_exists(mocker, mock_re
223
224
mock_exit .assert_not_called ()
224
225
assert mock_log_info .called_with (1 )
225
226
assert ('Getting latest release by from-tag name %s' , None ) == mock_log_info .call_args_list [0 ][0 ]
227
+
228
+
229
+ def test_get_latest_release_from_tag_name_not_defined_no_release (mocker , mock_repo ):
230
+ mocker .patch ("release_notes_generator.action_inputs.ActionInputs.is_from_tag_name_defined" , return_value = False )
231
+ mock_log_info = mocker .patch ("release_notes_generator.generator.logger.info" )
232
+
233
+ github_mock = mocker .Mock (spec = Github )
234
+ github_mock .get_repo .return_value = mock_repo
235
+
236
+ mock_repo .get_releases .return_value = []
237
+
238
+ mock_rate_limit = mocker .Mock ()
239
+ mock_rate_limit .core .remaining = 1000
240
+ github_mock .get_rate_limit .return_value = mock_rate_limit
241
+
242
+ release_notes_generator = ReleaseNotesGenerator (github_mock , CustomChapters (print_empty_chapters = True ))
243
+
244
+ latest_release = release_notes_generator .get_latest_release (mock_repo )
245
+
246
+ assert latest_release is None
247
+ assert mock_log_info .called_with (2 )
248
+ assert ('Getting latest release by semantic ordering (could not be the last one by time).' ,) == mock_log_info .call_args_list [0 ][0 ]
249
+ assert ('Latest release not found for %s. 1st release for repository!' , 'org/repo' ) == mock_log_info .call_args_list [1 ][0 ]
250
+
251
+
252
+ def test_get_latest_release_from_tag_name_not_defined_2_releases (mocker , mock_repo , mock_git_releases ):
253
+ mocker .patch ("release_notes_generator.action_inputs.ActionInputs.is_from_tag_name_defined" , return_value = False )
254
+ mock_log_info = mocker .patch ("release_notes_generator.generator.logger.info" )
255
+
256
+ github_mock = mocker .Mock (spec = Github )
257
+ github_mock .get_repo .return_value = mock_repo
258
+
259
+ mock_repo .get_releases .return_value = mock_git_releases
260
+
261
+ mock_rate_limit = mocker .Mock ()
262
+ mock_rate_limit .core .remaining = 1000
263
+ github_mock .get_rate_limit .return_value = mock_rate_limit
264
+
265
+ release_notes_generator = ReleaseNotesGenerator (github_mock , CustomChapters (print_empty_chapters = True ))
266
+
267
+ latest_release = release_notes_generator .get_latest_release (mock_repo )
268
+
269
+ assert latest_release is not None
270
+ assert ('Getting latest release by semantic ordering (could not be the last one by time).' ,) == mock_log_info .call_args_list [0 ][0 ]
271
+
272
+
273
+ def test_get_latest_release_from_tag_name_not_defined_2_releases_value_error (mocker , mock_repo , mock_git_releases ):
274
+ mocker .patch ("release_notes_generator.action_inputs.ActionInputs.is_from_tag_name_defined" , return_value = False )
275
+ mock_log_info = mocker .patch ("release_notes_generator.generator.logger.info" )
276
+ mock_log_debug = mocker .patch ("release_notes_generator.generator.logger.debug" )
277
+
278
+ github_mock = mocker .Mock (spec = Github )
279
+ github_mock .get_repo .return_value = mock_repo
280
+
281
+ mock_repo .get_releases .return_value = mock_git_releases
282
+
283
+ mock_rate_limit = mocker .Mock ()
284
+ mock_rate_limit .core .remaining = 1000
285
+ github_mock .get_rate_limit .return_value = mock_rate_limit
286
+
287
+ release_notes_generator = ReleaseNotesGenerator (github_mock , CustomChapters (print_empty_chapters = True ))
288
+ mocker .patch ("semver.Version.parse" , side_effect = ValueError )
289
+
290
+ latest_release = release_notes_generator .get_latest_release (mock_repo )
291
+
292
+ assert latest_release is None
293
+ assert ('Getting latest release by semantic ordering (could not be the last one by time).' ,) == mock_log_info .call_args_list [0 ][0 ]
294
+ assert ('Latest release not found for %s. 1st release for repository!' , 'org/repo' ) == mock_log_info .call_args_list [1 ][0 ]
295
+ assert ('Skipping invalid value of version tag: %s' , 'v1.0.0' ) == mock_log_debug .call_args_list [0 ][0 ]
296
+ assert ('Skipping invalid value of version tag: %s' , 'v2.0.0' ) == mock_log_debug .call_args_list [1 ][0 ]
297
+
298
+
299
+ def test_get_latest_release_from_tag_name_not_defined_2_releases_type_error (mocker , mock_repo , mock_git_releases ):
300
+ mocker .patch ("release_notes_generator.action_inputs.ActionInputs.is_from_tag_name_defined" , return_value = False )
301
+ mock_log_info = mocker .patch ("release_notes_generator.generator.logger.info" )
302
+ mock_log_debug = mocker .patch ("release_notes_generator.generator.logger.debug" )
303
+
304
+ github_mock = mocker .Mock (spec = Github )
305
+ github_mock .get_repo .return_value = mock_repo
306
+
307
+ mock_repo .get_releases .return_value = mock_git_releases
308
+
309
+ mock_rate_limit = mocker .Mock ()
310
+ mock_rate_limit .core .remaining = 1000
311
+ github_mock .get_rate_limit .return_value = mock_rate_limit
312
+
313
+ release_notes_generator = ReleaseNotesGenerator (github_mock , CustomChapters (print_empty_chapters = True ))
314
+ mocker .patch ("semver.Version.parse" , side_effect = TypeError )
315
+
316
+ latest_release = release_notes_generator .get_latest_release (mock_repo )
317
+
318
+ assert latest_release is None
319
+ assert ('Getting latest release by semantic ordering (could not be the last one by time).' ,) == mock_log_info .call_args_list [0 ][0 ]
320
+ assert ('Latest release not found for %s. 1st release for repository!' , 'org/repo' ) == mock_log_info .call_args_list [1 ][0 ]
321
+ assert ('Skipping invalid type of version tag: %s' , 'v1.0.0' ) == mock_log_debug .call_args_list [0 ][0 ]
322
+ assert ('Skipping invalid type of version tag: %s' , 'v2.0.0' ) == mock_log_debug .call_args_list [1 ][0 ]
0 commit comments