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

Commit3f67c4b

Browse files
nejchJohnVillalovos
authored andcommitted
feat(cli): add support for global CI lint
1 parent6e1342f commit3f67c4b

File tree

4 files changed

+61
-15
lines changed

4 files changed

+61
-15
lines changed

‎gitlab/client.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,8 @@ def __init__(
126126

127127
self.broadcastmessages=objects.BroadcastMessageManager(self)
128128
"""See :class:`~gitlab.v4.objects.BroadcastMessageManager`"""
129+
self.ci_lint=objects.CiLintManager(self)
130+
"""See :class:`~gitlab.v4.objects.CiLintManager`"""
129131
self.deploykeys=objects.DeployKeyManager(self)
130132
"""See :class:`~gitlab.v4.objects.DeployKeyManager`"""
131133
self.deploytokens=objects.DeployTokenManager(self)
@@ -397,6 +399,11 @@ def lint(self, content: str, **kwargs: Any) -> Tuple[bool, List[str]]:
397399
Returns:
398400
(True, []) if the file is valid, (False, errors(list)) otherwise
399401
"""
402+
utils.warn(
403+
"`lint()` is deprecated and will be removed in a future version.\n"
404+
"Please use `ci_lint.create()` instead.",
405+
category=DeprecationWarning,
406+
)
400407
post_data= {"content":content}
401408
data=self.http_post("/ci/lint",post_data=post_data,**kwargs)
402409
ifTYPE_CHECKING:

‎gitlab/v4/objects/ci_lint.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,25 @@
99
fromgitlab.mixinsimportCreateMixin,GetWithoutIdMixin
1010
fromgitlab.typesimportRequiredOptional
1111

12+
__all__= [
13+
"CiLint",
14+
"CiLintManager",
15+
"ProjectCiLint",
16+
"ProjectCiLintManager",
17+
]
18+
19+
20+
classCiLint(RESTObject):
21+
_id_attr=None
22+
23+
24+
classCiLintManager(CreateMixin,RESTManager):
25+
_path="/ci/lint"
26+
_obj_cls=CiLint
27+
_create_attrs=RequiredOptional(
28+
required=("content",),optional=("include_merged_yaml","include_jobs")
29+
)
30+
1231

1332
classProjectCiLint(RESTObject):
1433
pass

‎gitlab/v4/objects/projects.py

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@
3838
from .badgesimportProjectBadgeManager# noqa: F401
3939
from .boardsimportProjectBoardManager# noqa: F401
4040
from .branchesimportProjectBranchManager,ProjectProtectedBranchManager# noqa: F401
41-
from .ci_lintimportProjectCiLint,ProjectCiLintManager# noqa: F401
41+
from .ci_lintimportProjectCiLintManager# noqa: F401
4242
from .clustersimportProjectClusterManager# noqa: F401
4343
from .commitsimportProjectCommitManager# noqa: F401
4444
from .container_registryimportProjectRegistryRepositoryManager# noqa: F401
@@ -102,8 +102,6 @@
102102
"ProjectRemoteMirrorManager",
103103
"ProjectStorage",
104104
"ProjectStorageManager",
105-
"ProjectCiLint",
106-
"ProjectCiLintManager",
107105
]
108106

109107

@@ -165,7 +163,7 @@ class Project(RefreshMixin, SaveMixin, ObjectDeleteMixin, RepositoryMixin, RESTO
165163
badges:ProjectBadgeManager
166164
boards:ProjectBoardManager
167165
branches:ProjectBranchManager
168-
ci_lint:"ProjectCiLintManager"
166+
ci_lint:ProjectCiLintManager
169167
clusters:ProjectClusterManager
170168
commits:ProjectCommitManager
171169
customattributes:ProjectCustomAttributeManager

‎tests/unit/objects/test_ci_lint.py

Lines changed: 33 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,15 @@
11
importpytest
22
importresponses
33

4-
ci_lint_get_content= {
4+
gitlab_ci_yml="""---
5+
:test_job:
6+
:script: echo 1
7+
"""
8+
9+
ci_lint_create_content= {"status":"valid","errors": [],"warnings": []}
10+
11+
12+
project_ci_lint_content= {
513
"valid":True,
614
"merged_yaml":"---\n:test_job:\n :script: echo 1\n",
715
"errors": [],
@@ -10,40 +18,54 @@
1018

1119

1220
@pytest.fixture
13-
defresp_get_ci_lint():
21+
defresp_create_ci_lint():
22+
withresponses.RequestsMock()asrsps:
23+
rsps.add(
24+
method=responses.POST,
25+
url="http://localhost/api/v4/ci/lint",
26+
json=ci_lint_create_content,
27+
content_type="application/json",
28+
status=200,
29+
)
30+
yieldrsps
31+
32+
33+
@pytest.fixture
34+
defresp_get_project_ci_lint():
1435
withresponses.RequestsMock()asrsps:
1536
rsps.add(
1637
method=responses.GET,
1738
url="http://localhost/api/v4/projects/1/ci/lint",
18-
json=ci_lint_get_content,
39+
json=project_ci_lint_content,
1940
content_type="application/json",
2041
status=200,
2142
)
2243
yieldrsps
2344

2445

2546
@pytest.fixture
26-
defresp_create_ci_lint():
47+
defresp_create_project_ci_lint():
2748
withresponses.RequestsMock()asrsps:
2849
rsps.add(
2950
method=responses.POST,
3051
url="http://localhost/api/v4/projects/1/ci/lint",
31-
json=ci_lint_get_content,
52+
json=project_ci_lint_content,
3253
content_type="application/json",
3354
status=200,
3455
)
3556
yieldrsps
3657

3758

38-
deftest_project_ci_lint_get(project,resp_get_ci_lint):
59+
deftest_ci_lint_create(gl,resp_create_ci_lint):
60+
lint_result=gl.ci_lint.create({"content":gitlab_ci_yml})
61+
assertlint_result.status=="valid"
62+
63+
64+
deftest_project_ci_lint_get(project,resp_get_project_ci_lint):
3965
lint_result=project.ci_lint.get()
4066
assertlint_result.validisTrue
4167

4268

43-
deftest_project_ci_lint_create(project,resp_create_ci_lint):
44-
gitlab_ci_yml="""---
45-
:test_job:
46-
:script: echo 1
47-
"""
69+
deftest_project_ci_lint_create(project,resp_create_project_ci_lint):
4870
lint_result=project.ci_lint.create({"content":gitlab_ci_yml})
4971
assertlint_result.validisTrue

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp