diff options
author | Grzegorz Bizon <grzesiek.bizon@gmail.com> | 2018-05-14 14:24:59 +0200 |
---|---|---|
committer | Grzegorz Bizon <grzesiek.bizon@gmail.com> | 2018-05-14 14:27:07 +0200 |
commit | b784a985f2188e328da32cc9fdc73c8d4ac63733 (patch) | |
tree | d4bb10bfcbfaf19f9ab80595bf3cee81b5e2c83f | |
parent | 8b736c91fc928157df9ace050f769d0948b58c1d (diff) | |
download | gitlab-ce-b784a985f2188e328da32cc9fdc73c8d4ac63733.tar.gz |
Do not raise if variable expression can not be evaluated
-rw-r--r-- | lib/gitlab/ci/pipeline/expression/statement.rb | 2 | ||||
-rw-r--r-- | spec/lib/gitlab/ci/pipeline/expression/statement_spec.rb | 16 |
2 files changed, 16 insertions, 2 deletions
diff --git a/lib/gitlab/ci/pipeline/expression/statement.rb b/lib/gitlab/ci/pipeline/expression/statement.rb index 09a7c98464b..363e0b708a6 100644 --- a/lib/gitlab/ci/pipeline/expression/statement.rb +++ b/lib/gitlab/ci/pipeline/expression/statement.rb @@ -35,6 +35,8 @@ module Gitlab def truthful? evaluate.present? + rescue StatementError + false end def valid? diff --git a/spec/lib/gitlab/ci/pipeline/expression/statement_spec.rb b/spec/lib/gitlab/ci/pipeline/expression/statement_spec.rb index 6685bf5385b..633c932eabb 100644 --- a/spec/lib/gitlab/ci/pipeline/expression/statement_spec.rb +++ b/spec/lib/gitlab/ci/pipeline/expression/statement_spec.rb @@ -1,4 +1,4 @@ -require 'spec_helper' +require 'fast_spec_helper' describe Gitlab::Ci::Pipeline::Expression::Statement do subject do @@ -114,7 +114,8 @@ describe Gitlab::Ci::Pipeline::Expression::Statement do ['$UNDEFINED_VARIABLE == null', true], ['$PRESENT_VARIABLE', true], ['$UNDEFINED_VARIABLE', false], - ['$EMPTY_VARIABLE', false] + ['$EMPTY_VARIABLE', false], + ['$INVALID = 1', false] ] statements.each do |expression, value| @@ -126,5 +127,16 @@ describe Gitlab::Ci::Pipeline::Expression::Statement do end end end + + context 'when evaluating expression raises an error' do + let(:text) { '$PRESENT_VARIABLE' } + + it 'returns false' do + allow(subject).to receive(:evaluate) + .and_raise(described_class::StatementError) + + expect(subject.truthful?).to be_falsey + end + end end end |