Improve CI stage configuration entry validations
This commit is contained in:
parent
b228787f5a
commit
de4c9a2738
3 changed files with 12 additions and 10 deletions
|
@ -10,14 +10,16 @@ module Gitlab
|
||||||
|
|
||||||
validations do
|
validations do
|
||||||
validates :config, type: String
|
validates :config, type: String
|
||||||
validates :global, required_attribute: true
|
|
||||||
validate :known_stage, on: :processed
|
|
||||||
|
|
||||||
def known_stage
|
with_options on: :processed do
|
||||||
|
validates :global, required: true
|
||||||
|
|
||||||
|
validate do
|
||||||
unless known?
|
unless known?
|
||||||
stages_list = global.stages.join(', ')
|
|
||||||
errors.add(:config,
|
errors.add(:config,
|
||||||
"should be one of defined stages (#{stages_list})")
|
'should be one of defined stages ' \
|
||||||
|
"(#{global.stages.join(', ')})")
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -33,7 +33,7 @@ module Gitlab
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
class RequiredAttributeValidator < ActiveModel::EachValidator
|
class RequiredValidator < ActiveModel::EachValidator
|
||||||
def validate_each(record, attribute, value)
|
def validate_each(record, attribute, value)
|
||||||
if value.nil?
|
if value.nil?
|
||||||
raise Entry::InvalidError,
|
raise Entry::InvalidError,
|
||||||
|
|
|
@ -28,10 +28,10 @@ describe Gitlab::Ci::Config::Node::Stage do
|
||||||
context 'when stage config is incorrect' do
|
context 'when stage config is incorrect' do
|
||||||
describe '#errors' do
|
describe '#errors' do
|
||||||
context 'when reference to global node is not set' do
|
context 'when reference to global node is not set' do
|
||||||
let(:stage) { described_class.new(config) }
|
let(:stage) { described_class.new('test') }
|
||||||
|
|
||||||
it 'raises error' do
|
it 'raises error' do
|
||||||
expect { stage }.to raise_error(
|
expect { stage.validate! }.to raise_error(
|
||||||
Gitlab::Ci::Config::Node::Entry::InvalidError,
|
Gitlab::Ci::Config::Node::Entry::InvalidError,
|
||||||
/Entry needs global attribute set internally./
|
/Entry needs global attribute set internally./
|
||||||
)
|
)
|
||||||
|
|
Loading…
Reference in a new issue