summaryrefslogtreecommitdiff
path: root/lib/gitlab/ci/config/node
diff options
context:
space:
mode:
authorGrzegorz Bizon <grzesiek.bizon@gmail.com>2016-06-23 10:07:42 +0200
committerGrzegorz Bizon <grzesiek.bizon@gmail.com>2016-06-23 10:22:41 +0200
commit2240807c1aaa7d7df313dde9775e3ec99f7ad1b3 (patch)
treea26d6a5eae3f89d12c4cb2cf0caf434733025a91 /lib/gitlab/ci/config/node
parentbc2348f2e4365099e2a99df3d8e2a55fe7d138f4 (diff)
downloadgitlab-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.rb1
-rw-r--r--lib/gitlab/ci/config/node/factory.rb18
-rw-r--r--lib/gitlab/ci/config/node/variables.rb6
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