From d00591bc00ea95cadbee8cffcea6ccf6564ce3ee Mon Sep 17 00:00:00 2001 From: Fabien Boucher Date: Dec 11 2018 14:47:01 +0000 Subject: [PATCH 1/2] PV endpoint: check score after the merge_status eval This change makes sure a PR got a merge status other than 'unknown' when minimal score to merge is set in the settings. Indeed, if set, the score is checked first, and merge_status is not set if score no reached. Even if the score is not reached it makes sense to known the mergeability. --- diff --git a/pagure/internal/__init__.py b/pagure/internal/__init__.py index 8ede612..976e2bb 100644 --- a/pagure/internal/__init__.py +++ b/pagure/internal/__init__.py @@ -303,21 +303,6 @@ def mergeable_request_pull(): response.status_code = 404 return response - threshold = request.project.settings.get( - "Minimum_score_to_merge_pull-request", -1 - ) - if threshold > 0 and int(request.score) < int(threshold): - response = flask.jsonify( - { - "code": "CONFLICTS", - "message": "Pull-Request does not meet the minimal " - "number of review required: %s/%s" - % (request.score, threshold), - } - ) - response.status_code = 400 - return response - merge_status = request.merge_status if not merge_status or force: try: @@ -340,6 +325,21 @@ def mergeable_request_pull(): response.status_code = 500 return response + threshold = request.project.settings.get( + "Minimum_score_to_merge_pull-request", -1 + ) + if threshold > 0 and int(request.score) < int(threshold): + response = flask.jsonify( + { + "code": "CONFLICTS", + "message": "Pull-Request does not meet the minimal " + "number of review required: %s/%s" + % (request.score, threshold), + } + ) + response.status_code = 400 + return response + return flask.jsonify(pagure.utils.get_merge_options(request, merge_status)) From 3e1e11f6bace4c7c480676a9c4b57b50c0437bff Mon Sep 17 00:00:00 2001 From: Fabien Boucher Date: Dec 12 2018 13:05:14 +0000 Subject: [PATCH 2/2] Improve test for cached_merged_status when score activated --- diff --git a/tests/test_pagure_flask_internal.py b/tests/test_pagure_flask_internal.py index 529d1a5..8b01369 100644 --- a/tests/test_pagure_flask_internal.py +++ b/tests/test_pagure_flask_internal.py @@ -1302,6 +1302,12 @@ class PagureFlaskInternaltests(tests.Modeltests): js_data = json.loads(output.get_data(as_text=True)) self.assertDictEqual(js_data, exp) + # Verify we get a valid merge_status (not 'unknown') + pub_api_call = self.app.get('/api/0/test/pull-request/1') + data = pub_api_call.get_json() + self.assertIn( + data['cached_merge_status'], ('MERGE', 'FFORWARD')) + # Asking a second time will trigger the cache data = { 'csrf_token': csrf_token,