summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGeoffrey Lalonde <glalonde@google.com>2016-03-17 07:54:56 -0700
committerGeoffrey Lalonde <glalonde@google.com>2016-03-17 07:55:10 -0700
commit4117c815df73ba80258ca472470735826c68753a (patch)
tree74d7ea81633a4044dac5620badd3690a8e2e98ed
parent39fb836c482d653f540531215ccd60b327166651 (diff)
downloadgitlab-ce-4117c815df73ba80258ca472470735826c68753a.tar.gz
adjusted behavior so canceled builds tagged as allowed to fail do not fail build
-rw-r--r--app/models/commit_status.rb2
-rw-r--r--spec/lib/ci/status_spec.rb23
2 files changed, 24 insertions, 1 deletions
diff --git a/app/models/commit_status.rb b/app/models/commit_status.rb
index 3b1aa0f5c80..3377a85a55a 100644
--- a/app/models/commit_status.rb
+++ b/app/models/commit_status.rb
@@ -114,7 +114,7 @@ class CommitStatus < ActiveRecord::Base
end
def ignored?
- failed? && allow_failure?
+ allow_failure? && (failed? || canceled?)
end
def duration
diff --git a/spec/lib/ci/status_spec.rb b/spec/lib/ci/status_spec.rb
index 1539720bb8d..47f3df6e3ce 100644
--- a/spec/lib/ci/status_spec.rb
+++ b/spec/lib/ci/status_spec.rb
@@ -48,6 +48,29 @@ describe Ci::Status do
it { is_expected.to eq 'success' }
end
+ context 'success and canceled' do
+ let(:statuses) do
+ [create(type, status: :success), create(type, status: :canceled)]
+ end
+ it { is_expected.to eq 'failed' }
+ end
+
+ context 'all canceled' do
+ let(:statuses) do
+ [create(type, status: :canceled), create(type, status: :canceled)]
+ end
+ it { is_expected.to eq 'canceled' }
+ end
+
+ context 'success and canceled but allowed to fail' do
+ let(:statuses) do
+ [create(type, status: :success),
+ create(type, status: :canceled, allow_failure: true)]
+ end
+
+ it { is_expected.to eq 'success' }
+ end
+
context 'one finished and second running but allowed to fail' do
let(:statuses) do
[create(type, status: :success),