Do not update issue status for closed/rejected/solved issues
gitea-wip/gitea-redmine/pipeline/pr-main This commit looks good
Details
gitea-wip/gitea-redmine/pipeline/pr-main This commit looks good
Details
This commit is contained in:
parent
86a56bbcfa
commit
db10f71394
|
@ -22,7 +22,17 @@ REDMINE_STATUSES = {
|
|||
'Résolu': 3,
|
||||
'Solution proposée': 12,
|
||||
'Solution validée': 13,
|
||||
'Solution déployée': 4,
|
||||
'Fermé': 5,
|
||||
'Rejeté': 6,
|
||||
}
|
||||
CLOSED_STATUSES = [
|
||||
REDMINE_STATUSES['Résolu'],
|
||||
REDMINE_STATUSES['Solution déployée'],
|
||||
REDMINE_STATUSES['Fermé'],
|
||||
REDMINE_STATUSES['Rejeté'],
|
||||
]
|
||||
|
||||
app = flask.Flask(__name__)
|
||||
|
||||
|
||||
|
@ -147,9 +157,11 @@ def assign_to(user_field):
|
|||
return inner
|
||||
|
||||
|
||||
def set_status(status_id):
|
||||
def set_status(status_id, unless=[]):
|
||||
def inner(issue, payload):
|
||||
issue.status_id = status_id
|
||||
current_status = issue.status.id
|
||||
if current_status not in unless:
|
||||
issue.status_id = status_id
|
||||
|
||||
return inner
|
||||
|
||||
|
@ -201,7 +213,7 @@ PULL_REQUEST_OPENED_NOTE = '{pull_request_user_full_name} ({pull_request_user_us
|
|||
|
||||
handle_pull_request_opened = make_handler(
|
||||
assign_to('pull_request_user_username'),
|
||||
set_status(REDMINE_STATUSES['Solution proposée']),
|
||||
set_status(REDMINE_STATUSES['Solution proposée'], unless=CLOSED_STATUSES),
|
||||
add_note(
|
||||
PULL_REQUEST_OPENED_NOTE
|
||||
),
|
||||
|
@ -209,7 +221,7 @@ handle_pull_request_opened = make_handler(
|
|||
)
|
||||
handle_pull_request_opened_draft = make_handler(
|
||||
assign_to('pull_request_user_username'),
|
||||
set_status(REDMINE_STATUSES['En cours']),
|
||||
set_status(REDMINE_STATUSES['En cours'], unless=CLOSED_STATUSES),
|
||||
add_note(
|
||||
PULL_REQUEST_OPENED_NOTE
|
||||
),
|
||||
|
@ -219,7 +231,7 @@ handle_pull_request_opened_draft = make_handler(
|
|||
handle_pull_request_edited = make_handler(
|
||||
skip_if_notes_include('pull_request_url', 'Pull request already linked in issue'),
|
||||
assign_to('pull_request_user_username'),
|
||||
set_status(REDMINE_STATUSES['En cours']),
|
||||
set_status(REDMINE_STATUSES['En cours'], unless=CLOSED_STATUSES),
|
||||
add_note(
|
||||
'{pull_request_user_full_name} ({pull_request_user_username}) a lié 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'
|
||||
),
|
||||
|
@ -229,7 +241,7 @@ handle_pull_request_edited = make_handler(
|
|||
handle_pull_request_draft = make_handler(
|
||||
skip_if_status(REDMINE_STATUSES['En cours']),
|
||||
skip_if_not_draft,
|
||||
set_status(REDMINE_STATUSES['En cours']),
|
||||
set_status(REDMINE_STATUSES['En cours'], unless=CLOSED_STATUSES),
|
||||
add_note(
|
||||
'{pull_request_user_full_name} ({pull_request_user_username}) a commencé à travailler sur 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'
|
||||
),
|
||||
|
@ -237,7 +249,7 @@ handle_pull_request_draft = make_handler(
|
|||
)
|
||||
|
||||
handle_pull_request_merged = make_handler(
|
||||
set_status(REDMINE_STATUSES['Résolu']),
|
||||
set_status(REDMINE_STATUSES['Résolu'], unless=CLOSED_STATUSES),
|
||||
add_note(
|
||||
'{sender_full_name} ({sender_username}) a mergé 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'
|
||||
),
|
||||
|
@ -245,9 +257,9 @@ handle_pull_request_merged = make_handler(
|
|||
)
|
||||
|
||||
handle_pull_request_approved = make_handler(
|
||||
set_status(REDMINE_STATUSES['Solution proposée']),
|
||||
set_status(REDMINE_STATUSES['Solution proposée'], unless=CLOSED_STATUSES),
|
||||
save(),
|
||||
set_status(REDMINE_STATUSES['Solution validée']),
|
||||
set_status(REDMINE_STATUSES['Solution validée'], unless=CLOSED_STATUSES),
|
||||
set_value_if_empty("review_content", "N/A"),
|
||||
add_note(
|
||||
'{sender_full_name} ({sender_username}) a approuvé une pull request sur Gitea concernant cette demande :\n\n* URL : {pull_request_url}\n* Commentaire :\n\n{review_content}'
|
||||
|
@ -256,7 +268,7 @@ handle_pull_request_approved = make_handler(
|
|||
)
|
||||
|
||||
handle_pull_request_rejected = make_handler(
|
||||
set_status(REDMINE_STATUSES['En cours']),
|
||||
set_status(REDMINE_STATUSES['En cours'], unless=CLOSED_STATUSES),
|
||||
set_value_if_empty("review_content", "N/A"),
|
||||
add_note(
|
||||
'{sender_full_name} ({sender_username}) a relu et demandé des modifications sur une pull request sur Gitea concernant cette demande :\n\n* URL : {pull_request_url}\n* Commentaire :\n\n{review_content}'
|
||||
|
|
36
test_app.py
36
test_app.py
|
@ -115,6 +115,42 @@ def test_handle_pull_request_opened(mocker):
|
|||
issue.save.assert_called_once()
|
||||
|
||||
|
||||
|
||||
@pytest.mark.parametrize('status', [
|
||||
gitea_redmine.REDMINE_STATUSES['Résolu'],
|
||||
gitea_redmine.REDMINE_STATUSES['Fermé'],
|
||||
gitea_redmine.REDMINE_STATUSES['Solution déployée'],
|
||||
gitea_redmine.REDMINE_STATUSES['Rejeté'],
|
||||
])
|
||||
def test_handle_pull_request_opened_skips_closed_statuses(status, mocker):
|
||||
redmine_user = mocker.Mock(id=42)
|
||||
get_redmine_user = mocker.patch.object(gitea_redmine, 'get_redmine_user', return_value=redmine_user)
|
||||
|
||||
payload = {
|
||||
"action": "opened",
|
||||
"number": 2,
|
||||
"pull_request": {
|
||||
"id": 7,
|
||||
"url": "https://gitea.entrouvert.org/entrouvert/gitea-redmine/pulls/2",
|
||||
"number": 2,
|
||||
"user": {
|
||||
"id": 7,
|
||||
"login": "testuser",
|
||||
"full_name": "Test User",
|
||||
"email": "test_user@noreply.gitea.entrouvert.org",
|
||||
"username": "testuser",
|
||||
},
|
||||
"title": "Foo",
|
||||
"body": "See #70893",
|
||||
},
|
||||
}
|
||||
issue = mocker.Mock(status=mocker.Mock(id=status))
|
||||
original_status = issue.status_id
|
||||
gitea_redmine.handle_pull_request_opened(issue, payload)
|
||||
|
||||
assert issue.status_id == original_status
|
||||
|
||||
|
||||
def test_handle_pull_request_edited(mocker):
|
||||
redmine_user = mocker.Mock(id=42)
|
||||
get_redmine_user = mocker.patch.object(gitea_redmine, 'get_redmine_user', return_value=redmine_user)
|
||||
|
|
Loading…
Reference in New Issue