summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--app/models/ci/build.rb4
-rw-r--r--app/models/commit_status.rb4
-rw-r--r--spec/lib/ci/status_spec.rb54
3 files changed, 33 insertions, 29 deletions
diff --git a/app/models/ci/build.rb b/app/models/ci/build.rb
index e97d32e2c0b..5d800cd1f85 100644
--- a/app/models/ci/build.rb
+++ b/app/models/ci/build.rb
@@ -120,10 +120,6 @@ module Ci
end
end
- def ignored?
- failed? && allow_failure?
- end
-
def retryable?
project.builds_enabled? && commands.present?
end
diff --git a/app/models/commit_status.rb b/app/models/commit_status.rb
index 66e0502fc0c..434b3560d09 100644
--- a/app/models/commit_status.rb
+++ b/app/models/commit_status.rb
@@ -113,6 +113,10 @@ class CommitStatus < ActiveRecord::Base
canceled? || success? || failed?
end
+ def ignored?
+ failed? && allow_failure?
+ end
+
def duration
if started_at && finished_at
finished_at - started_at
diff --git a/spec/lib/ci/status_spec.rb b/spec/lib/ci/status_spec.rb
index cc4199dc7b6..a2eb14f3a97 100644
--- a/spec/lib/ci/status_spec.rb
+++ b/spec/lib/ci/status_spec.rb
@@ -2,36 +2,40 @@ require 'spec_helper'
describe Ci::Status do
describe '.get_status' do
- subject { described_class.get_status(builds) }
+ subject { described_class.get_status(statuses) }
+
+ [:ci_build, :generic_commit_status].each do |type|
+ context "for #{type}" do
+ context 'all successful' do
+ let(:statuses) { Array.new(2) { create(type, status: :success) } }
+ it { is_expected.to eq 'success' }
+ end
- context 'all builds successful' do
- let(:builds) { Array.new(2) { create(:ci_build, :success) } }
- it { is_expected.to eq 'success' }
- end
-
- context 'at least one build failed' do
- let(:builds) { [create(:ci_build, :success), create(:ci_build, :failed)] }
- it { is_expected.to eq 'failed' }
- end
+ context 'at least one failed' do
+ let(:statuses) { [create(type, status: :success), create(type, status: :failed)] }
+ it { is_expected.to eq 'failed' }
+ end
- context 'at least one running' do
- let(:builds) { [create(:ci_build, :success), create(:ci_build, :running)] }
- it { is_expected.to eq 'running' }
- end
+ context 'at least one running' do
+ let(:statuses) { [create(type, status: :success), create(type, status: :running)] }
+ it { is_expected.to eq 'running' }
+ end
- context 'at least one pending' do
- let(:builds) { [create(:ci_build, :success), create(:ci_build, :pending)] }
- it { is_expected.to eq 'running' }
- end
+ context 'at least one pending' do
+ let(:statuses) { [create(type, status: :success), create(type, status: :pending)] }
+ it { is_expected.to eq 'running' }
+ end
- context 'build success and failed but allowed to fail' do
- let(:builds) { [create(:ci_build, :success), create(:ci_build, :failed, :allowed_to_fail)] }
- it { is_expected.to eq 'success' }
- end
+ context 'success and failed but allowed to fail' do
+ let(:statuses) { [create(type, status: :success), create(type, status: :failed, allow_failure: true)] }
+ it { is_expected.to eq 'success' }
+ end
- context 'one build failed but allowed to fail' do
- let(:builds) { [create(:ci_build, :failed, :allowed_to_fail)] }
- it { is_expected.to eq 'success' }
+ context 'one failed but allowed to fail' do
+ let(:statuses) { [create(type, status: :failed, allow_failure: true)] }
+ it { is_expected.to eq 'success' }
+ end
+ end
end
end
end