mirror of
https://github.com/wahyd4/gitlabhq.git
synced 2026-08-17 00:26:07 +10:00
Collect errors from all nodes in new CI config
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user