Validate new before script CI configuration entry

This commit is contained in:
Grzegorz Bizon 2016-06-06 11:20:47 +02:00
parent 251dd571df
commit 6dbd1c86a8
3 changed files with 33 additions and 6 deletions

View File

@ -8,6 +8,9 @@ module Gitlab
end end
def validate! def validate!
unless validate_array_of_strings(@value)
@errors << 'before_script should be an array of strings'
end
end end
end end
end end

View File

@ -3,10 +3,12 @@ module Gitlab
class Config class Config
module Node module Node
class Entry class Entry
attr_reader :hash, :config, :parent, :nodes, :errors include Config::ValidationHelpers
def initialize(hash, config, parent = nil) attr_reader :value, :config, :parent, :nodes, :errors
@hash = hash
def initialize(value, config, parent = nil)
@value = value
@config = config @config = config
@parent = parent @parent = parent
@nodes = {} @nodes = {}
@ -15,8 +17,8 @@ module Gitlab
def process! def process!
keys.each_pair do |key, entry| keys.each_pair do |key, entry|
next unless hash.include?(key) next unless @value.include?(key)
@nodes[key] = entry.new(hash[key], config, self) @nodes[key] = entry.new(@value[key], config, self)
end end
@nodes.values.each(&:process!) @nodes.values.each(&:process!)

View File

@ -1,5 +1,27 @@
require 'spec_helper' require 'spec_helper'
describe Gitlab::Ci::Config::Node::BeforeScript do describe Gitlab::Ci::Config::Node::BeforeScript do
let(:entry) { described_class.new(hash, config) } let(:entry) { described_class.new(value, config) }
let(:config) { double('config') }
describe '#validate!' do
before { entry.validate! }
context 'when entry value is correct' do
let(:value) { ['ls', 'pwd'] }
it 'does not append errors' do
expect(entry.errors).to be_empty
end
end
context 'when entry value is not correct' do
let(:value) { 'ls' }
it 'saves errors' do
expect(entry.errors)
.to include /should be an array of strings/
end
end
end
end end