Commit ae4491b4 authored by Rémy Coutable's avatar Rémy Coutable

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
parents 439e154c 6511b973
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,6 +522,7 @@ module Ci
end
context 'when syntax is incorrect' do
context 'when variables defined but invalid' do
it 'raises error' do
variables = [:KEY1, 'value1', :KEY2, 'value2']
......@@ -537,6 +538,27 @@ module Ci
/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
context 'when job variables are not defined' do
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment