diff options
author | Grzegorz Bizon <grzesiek.bizon@gmail.com> | 2016-06-23 10:07:42 +0200 |
---|---|---|
committer | Grzegorz Bizon <grzesiek.bizon@gmail.com> | 2016-06-23 10:22:41 +0200 |
commit | 2240807c1aaa7d7df313dde9775e3ec99f7ad1b3 (patch) | |
tree | a26d6a5eae3f89d12c4cb2cf0caf434733025a91 /lib/gitlab/ci/config/node | |
parent | bc2348f2e4365099e2a99df3d8e2a55fe7d138f4 (diff) | |
download | gitlab-ce-2240807c1aaa7d7df313dde9775e3ec99f7ad1b3.tar.gz |
Assume that unspecified CI config is undefined
We assume that when someone adds a key for the configuration entry, but
does not provide a valid value, which causes entry to be `nil`, then
entry should be considered as the undefined one. We also assume this is
semantically correct, this is also backwards compatible with legacy CI
config processor.
See issue #18775 for more details.
Diffstat (limited to 'lib/gitlab/ci/config/node')
-rw-r--r-- | lib/gitlab/ci/config/node/configurable.rb | 1 | ||||
-rw-r--r-- | lib/gitlab/ci/config/node/factory.rb | 18 | ||||
-rw-r--r-- | lib/gitlab/ci/config/node/variables.rb | 6 |
3 files changed, 12 insertions, 13 deletions
diff --git a/lib/gitlab/ci/config/node/configurable.rb b/lib/gitlab/ci/config/node/configurable.rb index 25b5c2c9e21..0fb9092dafa 100644 --- a/lib/gitlab/ci/config/node/configurable.rb +++ b/lib/gitlab/ci/config/node/configurable.rb @@ -27,7 +27,6 @@ module Gitlab def create_node(key, factory) factory.with(value: @config[key], key: key) - factory.undefine! unless @config.has_key?(key) factory.create! end diff --git a/lib/gitlab/ci/config/node/factory.rb b/lib/gitlab/ci/config/node/factory.rb index 2271c386df6..647b0c82a79 100644 --- a/lib/gitlab/ci/config/node/factory.rb +++ b/lib/gitlab/ci/config/node/factory.rb @@ -18,16 +18,20 @@ module Gitlab self end - def undefine! - @attributes[:value] = @node.dup - @node = Node::Undefined - self - end - def create! raise InvalidFactory unless @attributes.has_key?(:value) - @node.new(@attributes[:value]).tap do |entry| + ## + # We assume unspecified entry is undefined. + # See issue #18775. + # + if @attributes[:value].nil? + node, value = Node::Undefined, @node + else + node, value = @node, @attributes[:value] + end + + node.new(value).tap do |entry| entry.description = @attributes[:description] entry.key = @attributes[:key] end diff --git a/lib/gitlab/ci/config/node/variables.rb b/lib/gitlab/ci/config/node/variables.rb index fd3ce8715a9..5f813f81f55 100644 --- a/lib/gitlab/ci/config/node/variables.rb +++ b/lib/gitlab/ci/config/node/variables.rb @@ -9,11 +9,7 @@ module Gitlab include Validatable validations do - validates :value, variables: true - end - - def value - @config || self.class.default + validates :config, variables: true end def self.default |