From 6e4e1050d9dba2b7b2523fdd1768823ab85feef4 Mon Sep 17 00:00:00 2001 From: GitLab Bot Date: Thu, 20 Aug 2020 18:42:06 +0000 Subject: Add latest changes from gitlab-org/gitlab@13-3-stable-ee --- spec/lib/gitlab/ci/status/composite_spec.rb | 83 +++++++++++++++++------------ 1 file changed, 48 insertions(+), 35 deletions(-) (limited to 'spec/lib/gitlab/ci/status') diff --git a/spec/lib/gitlab/ci/status/composite_spec.rb b/spec/lib/gitlab/ci/status/composite_spec.rb index 47bbc4169b6..e1dcd05373f 100644 --- a/spec/lib/gitlab/ci/status/composite_spec.rb +++ b/spec/lib/gitlab/ci/status/composite_spec.rb @@ -16,48 +16,61 @@ RSpec.describe Gitlab::Ci::Status::Composite do end describe '#status' do - shared_examples 'compares composite with SQL status' do - it 'returns exactly the same result' do - builds = Ci::Build.where(id: all_statuses) + using RSpec::Parameterized::TableSyntax - expect(composite_status.status).to eq(builds.legacy_status) - expect(composite_status.warnings?).to eq(builds.failed_but_allowed.any?) + shared_examples 'compares status and warnings' do + let(:composite_status) do + described_class.new(all_statuses) + end + + it 'returns status and warnings?' do + expect(composite_status.status).to eq(result) + expect(composite_status.warnings?).to eq(has_warnings) end end - shared_examples 'validate all combinations' do |perms| - Ci::HasStatus::STATUSES_ENUM.keys.combination(perms).each do |statuses| - context "with #{statuses.join(",")}" do - it_behaves_like 'compares composite with SQL status' do - let(:all_statuses) do - statuses.map { |status| @statuses[status] } - end - - let(:composite_status) do - described_class.new(all_statuses) - end - end - - Ci::HasStatus::STATUSES_ENUM.each do |allow_failure_status, _| - context "and allow_failure #{allow_failure_status}" do - it_behaves_like 'compares composite with SQL status' do - let(:all_statuses) do - statuses.map { |status| @statuses[status] } + - [@statuses_with_allow_failure[allow_failure_status]] - end - - let(:composite_status) do - described_class.new(all_statuses) - end - end - end - end + context 'allow_failure: false' do + where(:build_statuses, :result, :has_warnings) do + %i(skipped) | 'skipped' | false + %i(skipped success) | 'success' | false + %i(created) | 'created' | false + %i(preparing) | 'preparing' | false + %i(canceled success skipped) | 'canceled' | false + %i(pending created skipped) | 'pending' | false + %i(pending created skipped success) | 'running' | false + %i(running created skipped success) | 'running' | false + %i(success waiting_for_resource) | 'waiting_for_resource' | false + %i(success manual) | 'manual' | false + %i(success scheduled) | 'scheduled' | false + %i(created preparing) | 'preparing' | false + %i(created success pending) | 'running' | false + %i(skipped success failed) | 'failed' | false + end + + with_them do + let(:all_statuses) do + build_statuses.map { |status| @statuses[status] } end + + it_behaves_like 'compares status and warnings' end end - it_behaves_like 'validate all combinations', 0 - it_behaves_like 'validate all combinations', 1 - it_behaves_like 'validate all combinations', 2 + context 'allow_failure: true' do + where(:build_statuses, :result, :has_warnings) do + %i(manual) | 'skipped' | false + %i(skipped failed) | 'success' | true + %i(created failed) | 'created' | true + %i(preparing manual) | 'preparing' | false + end + + with_them do + let(:all_statuses) do + build_statuses.map { |status| @statuses_with_allow_failure[status] } + end + + it_behaves_like 'compares status and warnings' + end + end end end -- cgit v1.2.3