Skip to content
Snippets Groups Projects
Commit a3c07455 authored by Grzegorz Bizon's avatar Grzegorz Bizon
Browse files

Collect errors from all nodes in new CI config

parent 6dbd1c86
Branches
Tags
1 merge request!4482Add global entry with before script to new CI config
Pipeline #
Loading
Loading
@@ -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
Loading
Loading
@@ -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
Loading
Loading
Loading
Loading
@@ -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
Loading
Loading
@@ -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
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment