diff options
author | Grzegorz Bizon <grzesiek.bizon@gmail.com> | 2017-08-30 13:20:55 +0200 |
---|---|---|
committer | Grzegorz Bizon <grzesiek.bizon@gmail.com> | 2017-08-30 13:26:11 +0200 |
commit | 808fb2549bf8b3dee58a4af81a4b6513a5016342 (patch) | |
tree | 8f4e4f81e3c8d9df713ac5cde958b8b93fa656b0 | |
parent | 6a5097fd247f5d6fe7fe4efac38d685e5ef190ae (diff) | |
download | gitlab-ce-808fb2549bf8b3dee58a4af81a4b6513a5016342.tar.gz |
Raise exception when simplifiable ci entry incomplete
-rw-r--r-- | lib/gitlab/ci/config/entry/simplifiable.rb | 4 | ||||
-rw-r--r-- | spec/lib/gitlab/ci/config/entry/simplifiable_spec.rb | 13 |
2 files changed, 17 insertions, 0 deletions
diff --git a/lib/gitlab/ci/config/entry/simplifiable.rb b/lib/gitlab/ci/config/entry/simplifiable.rb index c26576fcbcd..0a03027736f 100644 --- a/lib/gitlab/ci/config/entry/simplifiable.rb +++ b/lib/gitlab/ci/config/entry/simplifiable.rb @@ -6,6 +6,10 @@ module Gitlab EntryStrategy = Struct.new(:name, :condition) def initialize(config, **metadata) + unless self.class.const_defined?(:UnknownStrategy) + raise ArgumentError, 'UndefinedStrategy not available!' + end + strategy = self.class.strategies.find do |variant| variant.condition.call(config) end diff --git a/spec/lib/gitlab/ci/config/entry/simplifiable_spec.rb b/spec/lib/gitlab/ci/config/entry/simplifiable_spec.rb index 5f9a0625b06..395062207a3 100644 --- a/spec/lib/gitlab/ci/config/entry/simplifiable_spec.rb +++ b/spec/lib/gitlab/ci/config/entry/simplifiable_spec.rb @@ -72,4 +72,17 @@ describe Gitlab::Ci::Config::Entry::Simplifiable do end end end + + context 'when a unknown strategy class is not defined' do + let(:entry) do + Class.new(described_class) do + strategy :String, if: -> (*) { true } + end + end + + it 'raises an error when being initialized' do + expect { entry.new('something') } + .to raise_error ArgumentError, /UndefinedStrategy not available!/ + end + end end |