summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGrzegorz Bizon <grzesiek.bizon@gmail.com>2016-02-20 16:35:29 +0100
committerGrzegorz Bizon <grzesiek.bizon@gmail.com>2016-02-20 16:35:29 +0100
commitc8b4c874d7b6752149e7eb37ab61771c016f132a (patch)
treef5e8813c0a9890c4a52d68423a1d23c36a9f41bd
parent040ae7e3e0c6f4d97fe6366bff9b05831283db7e (diff)
downloadgitlab-ce-ci/extend-summary-status-specs.tar.gz
Extend specs for summary build statusci/extend-summary-status-specs
Additional specs cover a case when one of the builds is running but allowed to fail. Previous implementation returned `running` status, which is wrong. This behavior has been changed in 8.5, this commit adds missing specs.
-rw-r--r--spec/lib/ci/status_spec.rb72
1 files changed, 51 insertions, 21 deletions
diff --git a/spec/lib/ci/status_spec.rb b/spec/lib/ci/status_spec.rb
index a2eb14f3a97..1539720bb8d 100644
--- a/spec/lib/ci/status_spec.rb
+++ b/spec/lib/ci/status_spec.rb
@@ -4,38 +4,68 @@ describe Ci::Status do
describe '.get_status' do
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
+ shared_examples 'build status summary' do
+ context 'all successful' do
+ let(:statuses) { Array.new(2) { create(type, status: :success) } }
+ it { is_expected.to eq 'success' }
+ end
- context 'at least one failed' do
- let(:statuses) { [create(type, status: :success), create(type, status: :failed)] }
- it { is_expected.to eq 'failed' }
+ context 'at least one failed' do
+ let(:statuses) do
+ [create(type, status: :success), create(type, status: :failed)]
end
- context 'at least one running' do
- let(:statuses) { [create(type, status: :success), create(type, status: :running)] }
- it { is_expected.to eq 'running' }
+ it { is_expected.to eq 'failed' }
+ end
+
+ context 'at least one running' do
+ let(:statuses) do
+ [create(type, status: :success), create(type, status: :running)]
end
- context 'at least one pending' do
- let(:statuses) { [create(type, status: :success), create(type, status: :pending)] }
- it { is_expected.to eq 'running' }
+ it { is_expected.to eq 'running' }
+ end
+
+ context 'at least one pending' do
+ let(:statuses) do
+ [create(type, status: :success), create(type, status: :pending)]
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' }
+ it { is_expected.to eq 'running' }
+ end
+
+ context 'success and failed but allowed to fail' do
+ let(:statuses) do
+ [create(type, status: :success),
+ create(type, status: :failed, allow_failure: true)]
end
- context 'one failed but allowed to fail' do
- let(:statuses) { [create(type, status: :failed, allow_failure: true)] }
- it { is_expected.to eq 'success' }
+ it { is_expected.to eq 'success' }
+ end
+
+ context 'one failed but allowed to fail' do
+ let(:statuses) { [create(type, status: :failed, allow_failure: true)] }
+ 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),
+ create(type, status: :running, allow_failure: true)]
end
+
+ it { is_expected.to eq 'running' }
end
end
+
+ context 'ci build statuses' do
+ let(:type) { :ci_build }
+ it_behaves_like 'build status summary'
+ end
+
+ context 'generic commit statuses' do
+ let(:type) { :generic_commit_status }
+ it_behaves_like 'build status summary'
+ end
end
end