diff --git a/lib/gitlab/ci/config/node/cache.rb b/lib/gitlab/ci/config/node/cache.rb index 21d96b220b8ec77eca61af46d33c28dc219e438b..b4bda2841ac467ec9c3751d0ab5c82beaee3c294 100644 --- a/lib/gitlab/ci/config/node/cache.rb +++ b/lib/gitlab/ci/config/node/cache.rb @@ -8,8 +8,10 @@ module Gitlab class Cache < Entry include Configurable + ALLOWED_KEYS = %i[key untracked paths] + validations do - validates :config, allowed_keys: %i[key untracked paths] + validates :config, allowed_keys: ALLOWED_KEYS end node :key, Node::Key, diff --git a/lib/gitlab/ci/config/node/commands.rb b/lib/gitlab/ci/config/node/commands.rb index f7e6950001eb29295b6c3ccef3aa316b0ddedad7..d7657ae314b1776301cb3dc7ab7129da2341e431 100644 --- a/lib/gitlab/ci/config/node/commands.rb +++ b/lib/gitlab/ci/config/node/commands.rb @@ -11,22 +11,20 @@ module Gitlab validations do include LegacyValidationHelpers - validate :string_or_array_of_strings - - def string_or_array_of_strings - unless config_valid? + validate do + unless string_or_array_of_strings?(config) errors.add(:config, 'should be a string or an array of strings') end end - def config_valid? - validate_string(config) || validate_array_of_strings(config) + def string_or_array_of_strings?(field) + validate_string(field) || validate_array_of_strings(field) end end def value - [@config].flatten + Array(@config) end end end diff --git a/lib/gitlab/ci/config/node/configurable.rb b/lib/gitlab/ci/config/node/configurable.rb index 93a9a253322c956f29921c3a6ff58d0876df6513..aedc28fe1d0138b65422b6b420b4ea4c0aaf32c8 100644 --- a/lib/gitlab/ci/config/node/configurable.rb +++ b/lib/gitlab/ci/config/node/configurable.rb @@ -56,10 +56,9 @@ module Gitlab end define_method("#{symbol}_value") do - if @entries[symbol] - return unless @entries[symbol].valid? - @entries[symbol].value - end + return unless @entries[symbol] && @entries[symbol].valid? + + @entries[symbol].value end alias_method symbol.to_sym, "#{symbol}_value".to_sym diff --git a/lib/gitlab/ci/config/node/global.rb b/lib/gitlab/ci/config/node/global.rb index b545b78a9406776e8858b018cbb81c5a385f44e9..ccd539fb0037cb43d2d39f70e2f5dd357ae19334 100644 --- a/lib/gitlab/ci/config/node/global.rb +++ b/lib/gitlab/ci/config/node/global.rb @@ -42,7 +42,7 @@ module Gitlab super compose_jobs! - compose_stages! + compose_deprecated_entries! end def compose_jobs! @@ -54,7 +54,7 @@ module Gitlab @entries[:jobs] = factory.create! end - def compose_stages! + def compose_deprecated_entries! ## # Deprecated `:types` key workaround - if types are defined and # stages are not defined we use types definition as stages. diff --git a/lib/gitlab/ci/config/node/job.rb b/lib/gitlab/ci/config/node/job.rb index ace79d829f201048e54793ae5394967505c658e8..e84737acbb98e2f70d96a6895bb9a908949e9e1a 100644 --- a/lib/gitlab/ci/config/node/job.rb +++ b/lib/gitlab/ci/config/node/job.rb @@ -66,10 +66,10 @@ module Gitlab node :services, Services, description: 'Services that will be used to execute this job.' - node :only, While, + node :only, Trigger, description: 'Refs policy this job will be executed for.' - node :except, While, + node :except, Trigger, description: 'Refs policy this job will be executed for.' node :variables, Variables, diff --git a/lib/gitlab/ci/config/node/null.rb b/lib/gitlab/ci/config/node/null.rb index 880d29f663d5ce2584ad9fad28ee14df65f6ff8d..88a5f53f13c1a046e8754acad7b4052f992b40cc 100644 --- a/lib/gitlab/ci/config/node/null.rb +++ b/lib/gitlab/ci/config/node/null.rb @@ -3,7 +3,7 @@ module Gitlab class Config module Node ## - # This class represents an undefined and unspecified node. + # This class represents an undefined node. # # Implements the Null Object pattern. # diff --git a/lib/gitlab/ci/config/node/while.rb b/lib/gitlab/ci/config/node/trigger.rb similarity index 83% rename from lib/gitlab/ci/config/node/while.rb rename to lib/gitlab/ci/config/node/trigger.rb index 84d4352624d2344863455477eff70cce493753e8..d8b31975088032c72a1e1b7661e4932b8e54c1bc 100644 --- a/lib/gitlab/ci/config/node/while.rb +++ b/lib/gitlab/ci/config/node/trigger.rb @@ -3,9 +3,9 @@ module Gitlab class Config module Node ## - # Entry that represents a ref and trigger policy for the job. + # Entry that represents a trigger policy for the job. # - class While < Entry + class Trigger < Entry include Validatable validations do diff --git a/lib/gitlab/ci/config/node/undefined.rb b/lib/gitlab/ci/config/node/undefined.rb index 84dab61e7e9f41602db8998fda904c03a4b731e1..45fef8c3ae55204c3d0a5a87b92de655e9d4cebe 100644 --- a/lib/gitlab/ci/config/node/undefined.rb +++ b/lib/gitlab/ci/config/node/undefined.rb @@ -3,16 +3,12 @@ module Gitlab class Config module Node ## - # This class represents an undefined and unspecified entry node. + # This class represents an unspecified entry node. # # It decorates original entry adding method that indicates it is # unspecified. # class Undefined < SimpleDelegator - def initialize(entry) - super - end - def specified? false end diff --git a/lib/gitlab/ci/config/node/validators.rb b/lib/gitlab/ci/config/node/validators.rb index 23d5faf6f075b8ee4a7a7983f4248f38d9caa97b..e20908ad3cb2f0727933fdfec05593149e54ddc8 100644 --- a/lib/gitlab/ci/config/node/validators.rb +++ b/lib/gitlab/ci/config/node/validators.rb @@ -44,15 +44,6 @@ module Gitlab end end - class RequiredValidator < ActiveModel::EachValidator - def validate_each(record, attribute, value) - if value.nil? - raise Entry::InvalidError, - "Entry needs #{attribute} attribute set internally." - end - end - end - class KeyValidator < ActiveModel::EachValidator include LegacyValidationHelpers diff --git a/spec/lib/gitlab/ci/config/node/artifacts_spec.rb b/spec/lib/gitlab/ci/config/node/artifacts_spec.rb index beed29b18aea24fce009f025074dc6bbdef9cf1f..c09a0a9c793532cb18da06c4add0f5cdbabb79fa 100644 --- a/spec/lib/gitlab/ci/config/node/artifacts_spec.rb +++ b/spec/lib/gitlab/ci/config/node/artifacts_spec.rb @@ -8,7 +8,7 @@ describe Gitlab::Ci::Config::Node::Artifacts do let(:config) { { paths: %w[public/] } } describe '#value' do - it 'returns image string' do + it 'returns artifacs configuration' do expect(entry.value).to eq config end end diff --git a/spec/lib/gitlab/ci/config/node/while_spec.rb b/spec/lib/gitlab/ci/config/node/trigger_spec.rb similarity index 90% rename from spec/lib/gitlab/ci/config/node/while_spec.rb rename to spec/lib/gitlab/ci/config/node/trigger_spec.rb index aac2ed7b3dbc70f2f2c059bdd4e2e2dd85f56c74..a4a3e36754ebf92c4bf04cbce670d7a8c0abdafb 100644 --- a/spec/lib/gitlab/ci/config/node/while_spec.rb +++ b/spec/lib/gitlab/ci/config/node/trigger_spec.rb @@ -1,6 +1,6 @@ require 'spec_helper' -describe Gitlab::Ci::Config::Node::While do +describe Gitlab::Ci::Config::Node::Trigger do let(:entry) { described_class.new(config) } describe 'validations' do @@ -48,7 +48,7 @@ describe Gitlab::Ci::Config::Node::While do describe '#errors' do it 'saves errors' do expect(entry.errors) - .to include 'while config should be an array of strings or regexps' + .to include 'trigger config should be an array of strings or regexps' end end end