Merge branch 'fix/error-when-job-variables-not-defined-but-specified' into 'master'
Fix error when CI job variables key used but not specified ## What does this MR do? This MR fixes a an error when CI job variables specified, but not defined: ```yaml image: ruby:2.2 test: variables: script: - rspec ``` ## What are the relevant issue numbers? Closes #18764 Follow up discussion in: #18775 ## Does this MR meet the acceptance criteria? - [x] [CHANGELOG](https://gitlab.com/gitlab-org/gitlab-ce/blob/master/CHANGELOG) entry added - [x] Tests - [x] Added for this feature/bug - [x] All builds are passing - [x] Conform by the [style guides](https://gitlab.com/gitlab-org/gitlab-ce/blob/master/CONTRIBUTING.md#style-guides) - [x] [Squashed related commits together](https://git-scm.com/book/en/Git-Tools-Rewriting-History#Squashing-Commits) See merge request !4745
This commit is contained in:
commit
ae4491b421
3 changed files with 40 additions and 17 deletions
|
@ -1,6 +1,7 @@
|
|||
Please view this file on the master branch, on stable branches it's out of date.
|
||||
|
||||
v 8.9.0 (unreleased)
|
||||
- Fix error when CI job variables key specified but not defined
|
||||
- Fix pipeline status when there are no builds in pipeline
|
||||
- Fix Error 500 when using closes_issues API with an external issue tracker
|
||||
- Add more information into RSS feed for issues (Alexander Matyushentsev)
|
||||
|
|
|
@ -54,7 +54,7 @@ module Ci
|
|||
job = @jobs[name.to_sym]
|
||||
return [] unless job
|
||||
|
||||
job.fetch(:variables, [])
|
||||
job[:variables] || []
|
||||
end
|
||||
|
||||
private
|
||||
|
|
|
@ -522,19 +522,41 @@ module Ci
|
|||
end
|
||||
|
||||
context 'when syntax is incorrect' do
|
||||
it 'raises error' do
|
||||
variables = [:KEY1, 'value1', :KEY2, 'value2']
|
||||
context 'when variables defined but invalid' do
|
||||
it 'raises error' do
|
||||
variables = [:KEY1, 'value1', :KEY2, 'value2']
|
||||
|
||||
config = YAML.dump(
|
||||
{ before_script: ['pwd'],
|
||||
rspec: {
|
||||
variables: variables,
|
||||
script: 'rspec' }
|
||||
})
|
||||
config = YAML.dump(
|
||||
{ before_script: ['pwd'],
|
||||
rspec: {
|
||||
variables: variables,
|
||||
script: 'rspec' }
|
||||
})
|
||||
|
||||
expect { GitlabCiYamlProcessor.new(config, path) }
|
||||
.to raise_error(GitlabCiYamlProcessor::ValidationError,
|
||||
/job: variables should be a map/)
|
||||
expect { GitlabCiYamlProcessor.new(config, path) }
|
||||
.to raise_error(GitlabCiYamlProcessor::ValidationError,
|
||||
/job: variables should be a map/)
|
||||
end
|
||||
end
|
||||
|
||||
context 'when variables key defined but value not specified' do
|
||||
it 'returns empty array' do
|
||||
config = YAML.dump(
|
||||
{ before_script: ['pwd'],
|
||||
rspec: {
|
||||
variables: nil,
|
||||
script: 'rspec' }
|
||||
})
|
||||
|
||||
config_processor = GitlabCiYamlProcessor.new(config, path)
|
||||
|
||||
##
|
||||
# TODO, in next version of CI configuration processor this
|
||||
# should be invalid configuration, see #18775 and #15060
|
||||
#
|
||||
expect(config_processor.job_variables(:rspec))
|
||||
.to be_an_instance_of(Array).and be_empty
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in a new issue