diff --git a/lib/gitlab/ci/config/node/entry.rb b/lib/gitlab/ci/config/node/entry.rb index 9e79e170a4fabf8cbc385763e71a0e9fc6133cdf..7148f4c2a79e1e3f400bc7088f46d5becb6010ca 100644 --- a/lib/gitlab/ci/config/node/entry.rb +++ b/lib/gitlab/ci/config/node/entry.rb @@ -26,12 +26,16 @@ module Gitlab process_nodes! end + def leaf? + nodes.none? + end + def nodes - @nodes.values + self.class.nodes end - def leaf? - self.class.nodes.none? + def descendants + @nodes.values end def ancestors @@ -43,7 +47,7 @@ module Gitlab end def errors - @validator.messages + nodes.flat_map(&:errors) + @validator.messages + @nodes.values.flat_map(&:errors) end def value @@ -73,13 +77,13 @@ module Gitlab private def compose! - self.class.nodes.each do |key, essence| + nodes.each do |key, essence| @nodes[key] = create_node(key, essence) end end def process_nodes! - nodes.each(&:process!) + @nodes.each_value(&:process!) end def create_node(key, essence) diff --git a/spec/lib/gitlab/ci/config/node/global_spec.rb b/spec/lib/gitlab/ci/config/node/global_spec.rb index 8f2f9e171d114714f7c198f95ccfd9c0fb8d508c..254cb28190ce4e34019390d1df1388f07fa68680 100644 --- a/spec/lib/gitlab/ci/config/node/global_spec.rb +++ b/spec/lib/gitlab/ci/config/node/global_spec.rb @@ -31,24 +31,24 @@ describe Gitlab::Ci::Config::Node::Global do before { global.process! } it 'creates nodes hash' do - expect(global.nodes).to be_an Array + expect(global.descendants).to be_an Array end it 'creates node object for each entry' do - expect(global.nodes.count).to eq 9 + expect(global.descendants.count).to eq 9 end it 'creates node object using valid class' do - expect(global.nodes.first) + expect(global.descendants.first) .to be_an_instance_of Gitlab::Ci::Config::Node::Script - expect(global.nodes.second) + expect(global.descendants.second) .to be_an_instance_of Gitlab::Ci::Config::Node::Image end it 'sets correct description for nodes' do - expect(global.nodes.first.description) + expect(global.descendants.first.description) .to eq 'Script that will be executed before each job.' - expect(global.nodes.second.description) + expect(global.descendants.second.description) .to eq 'Docker image that will be used to execute jobs.' end end @@ -139,11 +139,11 @@ describe Gitlab::Ci::Config::Node::Global do describe '#nodes' do it 'instantizes all nodes' do - expect(global.nodes.count).to eq 9 + expect(global.descendants.count).to eq 9 end it 'contains undefined nodes' do - expect(global.nodes.first) + expect(global.descendants.first) .to be_an_instance_of Gitlab::Ci::Config::Node::Undefined end end