From 30f58cf3924610564ca95b0ac17b69d272e74f5f Mon Sep 17 00:00:00 2001 From: Grzegorz Bizon Date: Thu, 25 Aug 2016 14:31:06 +0200 Subject: [PATCH] Add [] method for accessing ci entry dependencies --- lib/gitlab/ci/config/node/entry.rb | 4 ++++ spec/lib/gitlab/ci/config/node/global_spec.rb | 23 +++++++++++++++++++ 2 files changed, 27 insertions(+) diff --git a/lib/gitlab/ci/config/node/entry.rb b/lib/gitlab/ci/config/node/entry.rb index 907d25a8c49..8717eabf81e 100644 --- a/lib/gitlab/ci/config/node/entry.rb +++ b/lib/gitlab/ci/config/node/entry.rb @@ -20,6 +20,10 @@ module Gitlab @validator.validate(:new) end + def [](key) + @entries[key] || Node::Undefined.new + end + def compose!(deps = nil) return unless valid? diff --git a/spec/lib/gitlab/ci/config/node/global_spec.rb b/spec/lib/gitlab/ci/config/node/global_spec.rb index e033b423fdd..4ff2320f1bf 100644 --- a/spec/lib/gitlab/ci/config/node/global_spec.rb +++ b/spec/lib/gitlab/ci/config/node/global_spec.rb @@ -253,4 +253,27 @@ describe Gitlab::Ci::Config::Node::Global do expect(global.specified?).to be true end end + + describe '#[]' do + before { global.compose! } + + let(:hash) do + { cache: { key: 'a' }, rspec: { script: 'ls' } } + end + + context 'when node exists' do + it 'returns correct entry' do + expect(global[:cache]) + .to be_an_instance_of Gitlab::Ci::Config::Node::Cache + expect(global[:jobs][:rspec][:script].value).to eq ['ls'] + end + end + + context 'when node does not exist' do + it 'always return unspecified node' do + expect(global[:some][:unknown][:node]) + .not_to be_specified + end + end + end end