Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit61ba6bd

Browse files
fix: adds missing status check methods for merge requests
1 parentf62dda7 commit61ba6bd

File tree

4 files changed

+123
-7
lines changed

4 files changed

+123
-7
lines changed

‎docs/gl_objects/status_checks.rst‎

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,3 +55,18 @@ Delete an external status check::
5555

5656
status_check.delete(status_check_id)
5757

58+
List external status check for a project merge request::
59+
60+
merge_request = project.mergerequests.get(1)
61+
62+
merge_request.status_checks.list()
63+
64+
Set external status check for a project merge request::
65+
66+
merge_request = project.mergerequests.get(1)
67+
68+
merge_request.status_check_response.update({
69+
"external_status_check_id": status_check_id,
70+
"status": "passed",
71+
"sha": merge_request.sha
72+
})

‎gitlab/v4/objects/merge_requests.py‎

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,10 @@
4646
from .notesimportProjectMergeRequestNoteManager# noqa: F401
4747
from .pipelinesimportProjectMergeRequestPipelineManager# noqa: F401
4848
from .reviewersimportProjectMergeRequestReviewerDetailManager
49-
from .status_checksimportProjectMergeRequestStatusCheckManager
49+
from .status_checksimport (
50+
ProjectMergeRequestStatusCheckManager,
51+
ProjectMergeRequestStatusCheckResponseManager,
52+
)
5053

5154
__all__= [
5255
"MergeRequest",
@@ -171,6 +174,7 @@ class ProjectMergeRequest(
171174
resourcestateevents:ProjectMergeRequestResourceStateEventManager
172175
reviewer_details:ProjectMergeRequestReviewerDetailManager
173176
status_checks:ProjectMergeRequestStatusCheckManager
177+
status_check_response:ProjectMergeRequestStatusCheckResponseManager
174178

175179
@cli.register_custom_action(cls_names="ProjectMergeRequest")
176180
@exc.on_http_error(exc.GitlabMROnBuildSuccessError)

‎gitlab/v4/objects/status_checks.py‎

Lines changed: 35 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
1-
fromgitlab.baseimportRESTObject
1+
fromtypingimportAny,Dict,Optional
2+
3+
fromgitlab.baseimportRESTManager,RESTObject
24
fromgitlab.mixinsimport (
35
CreateMixin,
46
DeleteMixin,
@@ -27,6 +29,7 @@ class ProjectExternalStatusCheckManager(
2729
CreateMixin[ProjectExternalStatusCheck],
2830
UpdateMixin[ProjectExternalStatusCheck],
2931
DeleteMixin[ProjectExternalStatusCheck],
32+
RESTManager[ProjectExternalStatusCheck],
3033
):
3134
_path="/projects/{project_id}/external_status_checks"
3235
_obj_cls=ProjectExternalStatusCheck
@@ -41,15 +44,41 @@ class ProjectExternalStatusCheckManager(
4144
_types= {"protected_branch_ids":ArrayAttribute}
4245

4346

44-
classProjectMergeRequestStatusCheck(SaveMixin,RESTObject):
47+
classProjectMergeRequestStatusCheckResponse(SaveMixin,RESTObject):
4548
pass
4649

4750

48-
classProjectMergeRequestStatusCheckManager(ListMixin[ProjectMergeRequestStatusCheck]):
49-
_path="/projects/{project_id}/merge_requests/{merge_request_iid}/status_checks"
50-
_obj_cls=ProjectMergeRequestStatusCheck
51-
_from_parent_attrs= {"project_id":"project_id","merge_request_iid":"iid"}
51+
classProjectMergeRequestStatusCheckResponseManager(
52+
UpdateMixin[ProjectMergeRequestStatusCheckResponse],
53+
RESTManager[ProjectMergeRequestStatusCheckResponse],
54+
):
55+
_path="/projects/{project_id}/merge_requests/{mr_iid}/status_check_responses"
56+
_obj_cls=ProjectMergeRequestStatusCheckResponse
57+
_from_parent_attrs= {"project_id":"project_id","mr_iid":"iid"}
5258
_update_attrs=RequiredOptional(
5359
required=("sha","external_status_check_id","status")
5460
)
5561
_update_method=UpdateMethod.POST
62+
63+
defupdate(# type: ignore[override]
64+
self,new_data:Optional[Dict[str,Any]]=None,**kwargs:Any
65+
)->Dict[str,Any]:
66+
"""Update a Label on the server.
67+
68+
Args:
69+
**kwargs: Extra options to send to the server (e.g. sudo)
70+
"""
71+
returnsuper().update(id=None,new_data=new_data,**kwargs)
72+
73+
74+
classProjectMergeRequestStatusCheck(RESTObject):
75+
pass
76+
77+
78+
classProjectMergeRequestStatusCheckManager(
79+
ListMixin[ProjectMergeRequestStatusCheck],
80+
RESTManager[ProjectMergeRequestStatusCheck],
81+
):
82+
_path="/projects/{project_id}/merge_requests/{mr_iid}/status_checks"
83+
_obj_cls=ProjectMergeRequestStatusCheck
84+
_from_parent_attrs= {"project_id":"project_id","mr_iid":"iid"}

‎tests/unit/objects/test_status_checks.py‎

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,48 @@
55
importpytest
66
importresponses
77

8+
mr_content= {
9+
"id":1,
10+
"iid":1,
11+
"project_id":3,
12+
"title":"test1",
13+
"description":"fixed login page css paddings",
14+
"state":"merged",
15+
"merged_by": {
16+
"id":87854,
17+
"name":"Douwe Maan",
18+
"username":"DouweM",
19+
"state":"active",
20+
"avatar_url":"https://gitlab.example.com/uploads/-/system/user/avatar/87854/avatar.png",
21+
"web_url":"https://gitlab.com/DouweM",
22+
},
23+
"reviewers": [
24+
{
25+
"id":2,
26+
"name":"Sam Bauch",
27+
"username":"kenyatta_oconnell",
28+
"state":"active",
29+
"avatar_url":"https://www.gravatar.com/avatar/956c92487c6f6f7616b536927e22c9a0?s=80&d=identicon",
30+
"web_url":"http://gitlab.example.com//kenyatta_oconnell",
31+
}
32+
],
33+
}
34+
35+
external_status_checks_content= [
36+
{
37+
"id":2,
38+
"name":"Service 2",
39+
"external_url":"https://gitlab.example.com/test-endpoint-2",
40+
"status":"passed",
41+
},
42+
{
43+
"id":1,
44+
"name":"Service 1",
45+
"external_url":"https://gitlab.example.com/test-endpoint-1",
46+
"status":"pending",
47+
},
48+
]
49+
850

951
@pytest.fixture
1052
defexternal_status_check():
@@ -107,6 +149,26 @@ def resp_delete_external_status_checks():
107149
yieldrsps
108150

109151

152+
@pytest.fixture
153+
defresp_list_merge_requests_status_checks():
154+
withresponses.RequestsMock()asrsps:
155+
rsps.add(
156+
method=responses.GET,
157+
url="http://localhost/api/v4/projects/1/merge_requests/1",
158+
json=mr_content,
159+
content_type="application/json",
160+
status=200,
161+
)
162+
rsps.add(
163+
method=responses.GET,
164+
url="http://localhost/api/v4/projects/1/merge_requests/1/status_checks",
165+
json=external_status_checks_content,
166+
content_type="application/json",
167+
status=200,
168+
)
169+
yieldrsps
170+
171+
110172
deftest_list_external_status_checks(gl,resp_list_external_status_checks):
111173
status_checks=gl.projects.get(1,lazy=True).external_status_checks.list()
112174
assertlen(status_checks)==1
@@ -125,3 +187,9 @@ def test_delete_external_status_checks(gl, resp_delete_external_status_checks):
125187
gl.projects.get(1,lazy=True).external_status_checks.delete(1)
126188
status_checks=gl.projects.get(1,lazy=True).external_status_checks.list()
127189
assertlen(status_checks)==0
190+
191+
192+
deftest_get_merge_request_status_checks(gl,resp_list_merge_requests_status_checks):
193+
merge_request=gl.projects.get(1,lazy=True).mergerequests.get(1)
194+
status_checks=merge_request.status_checks.list()
195+
assertlen(status_checks)==2

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp