1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
|
import pytest
import responses
from gitlab import exceptions
ci_lint_create_content = {"status": "valid", "errors": [], "warnings": []}
ci_lint_create_invalid_content = {
"status": "invalid",
"errors": ["invalid format"],
"warnings": [],
}
project_ci_lint_content = {
"valid": True,
"merged_yaml": "---\n:test_job:\n :script: echo 1\n",
"errors": [],
"warnings": [],
}
@pytest.fixture
def resp_create_ci_lint():
with responses.RequestsMock() as rsps:
rsps.add(
method=responses.POST,
url="http://localhost/api/v4/ci/lint",
json=ci_lint_create_content,
content_type="application/json",
status=200,
)
yield rsps
@pytest.fixture
def resp_create_ci_lint_invalid():
with responses.RequestsMock() as rsps:
rsps.add(
method=responses.POST,
url="http://localhost/api/v4/ci/lint",
json=ci_lint_create_invalid_content,
content_type="application/json",
status=200,
)
yield rsps
@pytest.fixture
def resp_get_project_ci_lint():
with responses.RequestsMock() as rsps:
rsps.add(
method=responses.GET,
url="http://localhost/api/v4/projects/1/ci/lint",
json=project_ci_lint_content,
content_type="application/json",
status=200,
)
yield rsps
@pytest.fixture
def resp_create_project_ci_lint():
with responses.RequestsMock() as rsps:
rsps.add(
method=responses.POST,
url="http://localhost/api/v4/projects/1/ci/lint",
json=project_ci_lint_content,
content_type="application/json",
status=200,
)
yield rsps
def test_ci_lint_create(gl, resp_create_ci_lint, valid_gitlab_ci_yml):
lint_result = gl.ci_lint.create({"content": valid_gitlab_ci_yml})
assert lint_result.status == "valid"
def test_ci_lint_validate(gl, resp_create_ci_lint, valid_gitlab_ci_yml):
gl.ci_lint.validate({"content": valid_gitlab_ci_yml})
def test_ci_lint_validate_invalid_raises(
gl, resp_create_ci_lint_invalid, invalid_gitlab_ci_yml
):
with pytest.raises(exceptions.GitlabCiLintError, match="invalid format"):
gl.ci_lint.validate({"content": invalid_gitlab_ci_yml})
def test_project_ci_lint_get(project, resp_get_project_ci_lint):
lint_result = project.ci_lint.get()
assert lint_result.valid is True
def test_project_ci_lint_create(
project, resp_create_project_ci_lint, valid_gitlab_ci_yml
):
lint_result = project.ci_lint.create({"content": valid_gitlab_ci_yml})
assert lint_result.valid is True
|