Collect errors from all nodes in new CI config

This commit is contained in:
Grzegorz Bizon
2016-06-06 11:59:25 +02:00
parent 6dbd1c86a8
commit a3c0745514
2 changed files with 38 additions and 5 deletions
+15 -3
View File
@@ -5,7 +5,7 @@ module Gitlab
class Entry
include Config::ValidationHelpers
attr_reader :value, :config, :parent, :nodes, :errors
attr_reader :value, :parent
def initialize(value, config, parent = nil)
@value = value
@@ -21,8 +21,20 @@ module Gitlab
@nodes[key] = entry.new(@value[key], config, self)
end
@nodes.values.each(&:process!)
@nodes.values.each(&:validate!)
nodes.each(&:process!)
nodes.each(&:validate!)
end
def errors
@errors + nodes.map(&:errors).flatten
end
def valid?
errors.none?
end
def nodes
@nodes.values
end
def keys
+23 -2
View File
@@ -19,7 +19,7 @@ describe Gitlab::Ci::Config::Node::Global do
before { global.process! }
it 'creates nodes hash' do
expect(global.nodes).to be_a Hash
expect(global.nodes).to be_an Array
end
it 'creates node object for each entry' do
@@ -27,9 +27,30 @@ describe Gitlab::Ci::Config::Node::Global do
end
it 'creates node object using valid class' do
expect(global.nodes[:before_script])
expect(global.nodes.first)
.to be_an_instance_of Gitlab::Ci::Config::Node::BeforeScript
end
end
end
context 'when hash is not valid' do
let(:hash) do
{ before_script: 'ls' }
end
before { global.process! }
describe '#valid?' do
it 'is not valid' do
expect(global).not_to be_valid
end
end
describe '#errors' do
it 'reports errors from child nodes' do
expect(global.errors)
.to include 'before_script should be an array of strings'
end
end
end
end