Commits without .gitlab-ci.yml are marked as skipped
- Save detailed error when YAML syntax
This commit is contained in:
parent
a42d469ab2
commit
2b907f61ff
|
@ -188,12 +188,15 @@ module Ci
|
|||
end
|
||||
|
||||
def config_processor
|
||||
return nil unless ci_yaml_file
|
||||
@config_processor ||= Ci::GitlabCiYamlProcessor.new(ci_yaml_file, gl_project.path_with_namespace)
|
||||
rescue Ci::GitlabCiYamlProcessor::ValidationError => e
|
||||
save_yaml_error(e.message)
|
||||
nil
|
||||
rescue Psych::SyntaxError => e
|
||||
save_yaml_error(e.message)
|
||||
nil
|
||||
rescue Exception => e
|
||||
logger.error e.message + "\n" + e.backtrace.join("\n")
|
||||
save_yaml_error("Undefined yaml error")
|
||||
nil
|
||||
end
|
||||
|
|
|
@ -425,8 +425,12 @@ module Ci
|
|||
end
|
||||
|
||||
describe "Error handling" do
|
||||
it "fails to parse YAML" do
|
||||
expect{GitlabCiYamlProcessor.new("invalid: yaml: test")}.to raise_error(Psych::SyntaxError)
|
||||
end
|
||||
|
||||
it "indicates that object is invalid" do
|
||||
expect{GitlabCiYamlProcessor.new("invalid_yaml\n!ccdvlf%612334@@@@")}.to raise_error(GitlabCiYamlProcessor::ValidationError)
|
||||
expect{GitlabCiYamlProcessor.new("invalid_yaml")}.to raise_error(GitlabCiYamlProcessor::ValidationError)
|
||||
end
|
||||
|
||||
it "returns errors if tags parameter is invalid" do
|
||||
|
|
|
@ -100,7 +100,7 @@ module Ci
|
|||
end
|
||||
|
||||
it "skips builds creation if there is [ci skip] tag in commit message and yaml is invalid" do
|
||||
stub_ci_commit_yaml_file('invalid: file')
|
||||
stub_ci_commit_yaml_file('invalid: file: fiile')
|
||||
commits = [{ message: message }]
|
||||
commit = service.execute(project, user,
|
||||
ref: 'refs/tags/0_1',
|
||||
|
@ -110,6 +110,24 @@ module Ci
|
|||
)
|
||||
expect(commit.builds.any?).to be false
|
||||
expect(commit.status).to eq("skipped")
|
||||
expect(commit.yaml_errors).to be_nil
|
||||
end
|
||||
end
|
||||
|
||||
describe :config_processor do
|
||||
it "skips builds creation if yaml is invalid" do
|
||||
allow_any_instance_of(Ci::Commit).to receive(:git_commit_message) { "message" }
|
||||
stub_ci_commit_yaml_file('invalid: file: file')
|
||||
commits = [{ message: message }]
|
||||
commit = service.execute(project, user,
|
||||
ref: 'refs/tags/0_1',
|
||||
before: '00000000',
|
||||
after: '31das312',
|
||||
commits: commits
|
||||
)
|
||||
expect(commit.builds.any?).to be false
|
||||
expect(commit.status).to eq("skipped")
|
||||
expect(commit.yaml_errors).to_not be_nil
|
||||
end
|
||||
end
|
||||
|
||||
|
|
Loading…
Reference in New Issue