summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGrzegorz Bizon <grzesiek.bizon@gmail.com>2017-08-30 13:20:55 +0200
committerGrzegorz Bizon <grzesiek.bizon@gmail.com>2017-08-30 13:26:11 +0200
commit808fb2549bf8b3dee58a4af81a4b6513a5016342 (patch)
tree8f4e4f81e3c8d9df713ac5cde958b8b93fa656b0
parent6a5097fd247f5d6fe7fe4efac38d685e5ef190ae (diff)
downloadgitlab-ce-808fb2549bf8b3dee58a4af81a4b6513a5016342.tar.gz
Raise exception when simplifiable ci entry incomplete
-rw-r--r--lib/gitlab/ci/config/entry/simplifiable.rb4
-rw-r--r--spec/lib/gitlab/ci/config/entry/simplifiable_spec.rb13
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