change status when PR is closed (#74119)
gitea/gitea-redmine/pipeline/head This commit looks good Details

This commit is contained in:
Benjamin Dauvergne 2023-04-24 16:16:52 +02:00
parent 309b273e59
commit b5bb8dd3b6
2 changed files with 51 additions and 0 deletions

View File

@ -98,6 +98,8 @@ def get_handler(payload):
and payload['pull_request'].get('merged')
):
return handle_pull_request_merged, 'pull_request.merged'
if payload.get('action') == 'closed' and payload.get('pull_request'):
return handle_pull_request_closed, 'pull_request.closed'
return None, None
@ -338,3 +340,11 @@ handle_pull_request_rejected = make_handler(
),
save(),
)
handle_pull_request_closed = make_handler(
set_status(REDMINE_STATUSES['En cours'], unless=CLOSED_STATUSES),
add_note(
'{sender_full_name} ({sender_username}) a fermé une pull request sur Gitea concernant cette demande :\n\n* URL : {pull_request_url}\n* Titre : {pull_request_title}\n* Modifications : {pull_request_url}/files'
),
save(),
)

View File

@ -46,6 +46,11 @@ def client():
gitea_redmine.handle_pull_request_merged,
'pull_request.merged',
),
(
{'action': 'closed', 'pull_request': {'merged': False}},
gitea_redmine.handle_pull_request_closed,
'pull_request.closed',
),
({'action': 'unknown', 'pull_request': 'foo'}, None, None),
],
)
@ -535,3 +540,39 @@ def test_excluded_project_parent_false(mocker):
project = mocker.Mock(identifier='project')
project.parent = parent
assert gitea_redmine.is_excluded_project(project) is False
def test_handle_pull_request_closed(mocker):
payload = {
"action": "closed",
"number": 2,
"pull_request": {
"id": 7,
"url": "https://gitea.entrouvert.org/entrouvert/gitea-redmine/pulls/2",
"number": 2,
"title": "Foo",
"body": "See #70893",
"merged": False,
},
"sender": {
"id": 7,
"login": "testuser",
"full_name": "Test User",
"email": "test_user@noreply.gitea.entrouvert.org",
"username": "testuser",
},
}
project = mocker.Mock()
project.parent = None
issue = mocker.Mock()
gitea_redmine.handle_pull_request_closed(issue, payload, project)
assert issue.status_id == gitea_redmine.REDMINE_STATUSES['En cours']
assert issue.notes == (
'Test User (testuser) a fermé une pull request sur Gitea concernant cette demande :\n\n'
'* URL : https://gitea.entrouvert.org/entrouvert/gitea-redmine/pulls/2\n'
'* Titre : Foo\n'
'* Modifications : https://gitea.entrouvert.org/entrouvert/gitea-redmine/pulls/2/files'
)
issue.save.assert_called_once()