From 92312786f13c72188abbbe4f0b6cbdd36de2331d Mon Sep 17 00:00:00 2001 From: Grzegorz Bizon <grzesiek.bizon@gmail.com> Date: Wed, 29 Jun 2016 09:10:23 +0200 Subject: [PATCH] Add CI config entry location info to error message This CI config entry location in configuration Hash. --- lib/gitlab/ci/config/node/entry.rb | 7 +------ lib/gitlab/ci/config/node/validator.rb | 9 ++++++++- spec/lib/gitlab/ci/config/node/global_spec.rb | 6 ------ spec/lib/gitlab/ci/config/node/validator_spec.rb | 7 ++++++- 4 files changed, 15 insertions(+), 14 deletions(-) diff --git a/lib/gitlab/ci/config/node/entry.rb b/lib/gitlab/ci/config/node/entry.rb index f22dac44836..17d04fbdfec 100644 --- a/lib/gitlab/ci/config/node/entry.rb +++ b/lib/gitlab/ci/config/node/entry.rb @@ -8,9 +8,8 @@ module Gitlab class Entry class InvalidError < StandardError; end - attr_writer :key attr_reader :config - attr_accessor :parent, :description + attr_accessor :key, :parent, :description def initialize(config) @config = config @@ -35,10 +34,6 @@ module Gitlab self.class.nodes.none? end - def key - @key || self.class.name.demodulize.underscore - end - def valid? errors.none? end diff --git a/lib/gitlab/ci/config/node/validator.rb b/lib/gitlab/ci/config/node/validator.rb index 18e795d2c42..d898d521548 100644 --- a/lib/gitlab/ci/config/node/validator.rb +++ b/lib/gitlab/ci/config/node/validator.rb @@ -8,17 +8,24 @@ module Gitlab def initialize(node) super(node) + @node = node end def messages errors.full_messages.map do |error| - "#{key} #{error}".humanize + "#{location} #{error}".humanize end end def self.name 'Validator' end + + private + + def location + key || @node.class.name.demodulize.underscore + end end end end diff --git a/spec/lib/gitlab/ci/config/node/global_spec.rb b/spec/lib/gitlab/ci/config/node/global_spec.rb index 6aef6b913cf..cf7ab13c8b1 100644 --- a/spec/lib/gitlab/ci/config/node/global_spec.rb +++ b/spec/lib/gitlab/ci/config/node/global_spec.rb @@ -13,12 +13,6 @@ describe Gitlab::Ci::Config::Node::Global do end end - describe '#key' do - it 'returns underscored class name' do - expect(global.key).to eq 'global' - end - end - context 'when hash is valid' do context 'when all entries defined' do let(:hash) do diff --git a/spec/lib/gitlab/ci/config/node/validator_spec.rb b/spec/lib/gitlab/ci/config/node/validator_spec.rb index c293faa33ae..87a1bbf55c0 100644 --- a/spec/lib/gitlab/ci/config/node/validator_spec.rb +++ b/spec/lib/gitlab/ci/config/node/validator_spec.rb @@ -5,6 +5,10 @@ describe Gitlab::Ci::Config::Node::Validator do let(:validator_instance) { validator.new(node) } let(:node) { spy('node') } + before do + allow(node).to receive(:key).and_return('node') + end + describe 'delegated validator' do before do validator.class_eval do @@ -42,7 +46,8 @@ describe Gitlab::Ci::Config::Node::Validator do it 'returns errors' do validator_instance.validate - expect(validator_instance.messages).not_to be_empty + expect(validator_instance.messages) + .to include "Node test attribute can't be blank" end end end -- GitLab