summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGrzegorz Bizon <grzesiek.bizon@gmail.com>2018-05-14 14:24:59 +0200
committerGrzegorz Bizon <grzesiek.bizon@gmail.com>2018-05-14 14:27:07 +0200
commitb784a985f2188e328da32cc9fdc73c8d4ac63733 (patch)
treed4bb10bfcbfaf19f9ab80595bf3cee81b5e2c83f
parent8b736c91fc928157df9ace050f769d0948b58c1d (diff)
downloadgitlab-ce-b784a985f2188e328da32cc9fdc73c8d4ac63733.tar.gz
Do not raise if variable expression can not be evaluated
-rw-r--r--lib/gitlab/ci/pipeline/expression/statement.rb2
-rw-r--r--spec/lib/gitlab/ci/pipeline/expression/statement_spec.rb16
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