Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
G
gitlab-ce
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
1
Merge Requests
1
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
nexedi
gitlab-ce
Commits
9e313c12
Commit
9e313c12
authored
Aug 25, 2016
by
Katarzyna Kobierska
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add class method to encapsulate exception
parent
de2e8d4a
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
47 additions
and
21 deletions
+47
-21
app/controllers/ci/lints_controller.rb
app/controllers/ci/lints_controller.rb
+3
-3
lib/api/lint.rb
lib/api/lint.rb
+16
-18
lib/ci/gitlab_ci_yaml_processor.rb
lib/ci/gitlab_ci_yaml_processor.rb
+9
-0
spec/lib/ci/gitlab_ci_yaml_processor_spec.rb
spec/lib/ci/gitlab_ci_yaml_processor_spec.rb
+19
-0
No files found.
app/controllers/ci/lints_controller.rb
View file @
9e313c12
...
...
@@ -11,15 +11,15 @@ module Ci
if
@content
.
blank?
@status
=
false
@error
=
"Please provide content of .gitlab-ci.yml"
elsif
Ci
::
GitlabCiYamlProcessor
.
validate
(
@content
)
!=
"valid"
@status
=
false
@error
=
Ci
::
GitlabCiYamlProcessor
.
validate
(
@content
)
else
@config_processor
=
Ci
::
GitlabCiYamlProcessor
.
new
(
@content
)
@stages
=
@config_processor
.
stages
@builds
=
@config_processor
.
builds
@status
=
true
end
rescue
Ci
::
GitlabCiYamlProcessor
::
ValidationError
,
Psych
::
SyntaxError
=>
e
@error
=
e
.
message
@status
=
false
rescue
@error
=
'Undefined error'
@status
=
false
...
...
lib/api/lint.rb
View file @
9e313c12
...
...
@@ -7,31 +7,29 @@ module API
desc
'Validation of .gitlab-ci.yml content'
post
do
status
200
begin
response
=
{
status:
''
,
errors:
[],
jobs:
[]
}
config_processor
=
Ci
::
GitlabCiYamlProcessor
.
new
(
params
[
:content
])
config_processor
.
builds
.
each
do
|
build
|
response
[
:jobs
].
push
(
"
#{
build
[
:name
]
}
"
)
response
[
:status
]
=
'valid'
end
response
response
=
{
status:
''
,
errors:
[],
jobs:
[]
}
rescue
Ci
::
GitlabCiYamlProcessor
::
ValidationError
,
Psych
::
SyntaxError
=>
e
if
Ci
::
GitlabCiYamlProcessor
.
validate
(
@content
)
!=
"valid"
status
200
response
[
:errors
].
push
(
e
.
message
)
response
[
:status
]
=
'invalid'
response
end
config_processor
=
Ci
::
GitlabCiYamlProcessor
.
new
(
params
[
:content
])
config_processor
.
builds
.
each
do
|
build
|
response
[
:jobs
].
push
(
"
#{
build
[
:name
]
}
"
)
response
[
:status
]
=
'valid'
end
status
200
response
end
end
end
...
...
lib/ci/gitlab_ci_yaml_processor.rb
View file @
9e313c12
...
...
@@ -78,6 +78,15 @@ module Ci
}
end
def
self
.
validate
(
content
)
begin
Ci
::
GitlabCiYamlProcessor
.
new
(
content
)
"valid"
rescue
ValidationError
,
Psych
::
SyntaxError
=>
e
e
.
message
end
end
private
def
initial_parsing
...
...
spec/lib/ci/gitlab_ci_yaml_processor_spec.rb
View file @
9e313c12
...
...
@@ -1250,5 +1250,24 @@ EOT
end
end
end
describe
"#validate(config)"
do
describe
"Error handling"
do
it
"returns error to parse YAML"
do
config
=
YAML
.
dump
(
"invalid: yaml: test"
)
expect
(
GitlabCiYamlProcessor
.
validate
(
config
)).
to
eq
"Invalid configuration format"
end
it
"returns errors if tags parameter is invalid"
do
config
=
YAML
.
dump
({
rspec:
{
script:
"test"
,
tags:
"mysql"
}
})
expect
(
GitlabCiYamlProcessor
.
validate
(
config
)).
to
eq
"jobs:rspec tags should be an array of strings"
end
it
"does not return errors"
do
config
=
File
.
read
(
Rails
.
root
.
join
(
'spec/support/gitlab_stubs/gitlab_ci.yml'
))
expect
(
GitlabCiYamlProcessor
.
validate
(
config
)).
to
eq
"valid"
end
end
end
end
end
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment