Skip to content
代码片段 群组 项目
未验证 提交 09c7ca19 编辑于 作者: Patrick Bajao's avatar Patrick Bajao 提交者: GitLab
浏览文件

Merge branch...

Merge branch '441316-mergewhencheckspassservice-doesn-t-account-for-mergetrains-being-enabled' into 'master' 

Disallow MergeWhenChecksStrategy when MergeTrains enabled

See merge request https://gitlab.com/gitlab-org/gitlab/-/merge_requests/144402



Merged-by: default avatarPatrick Bajao <ebajao@gitlab.com>
Approved-by: default avatardrew stachon <730684-drew@users.noreply.gitlab.com>
Approved-by: default avatarPatrick Bajao <ebajao@gitlab.com>
Co-authored-by: default avatarMarc Shaw <mshaw@gitlab.com>
No related branches found
No related tags found
无相关合并请求
...@@ -30,6 +30,7 @@ def add_system_note(merge_request) ...@@ -30,6 +30,7 @@ def add_system_note(merge_request)
def check_availability(merge_request) def check_availability(merge_request)
return false if Feature.disabled?(:merge_when_checks_pass, merge_request.project) return false if Feature.disabled?(:merge_when_checks_pass, merge_request.project)
return false unless merge_request.approval_feature_available? return false unless merge_request.approval_feature_available?
return false if merge_request.project.merge_trains_enabled?
super || super ||
!merge_request.approved? || !merge_request.approved? ||
......
...@@ -16,6 +16,13 @@ ...@@ -16,6 +16,13 @@
subject { service.available_for?(mr_merge_if_green_enabled) } subject { service.available_for?(mr_merge_if_green_enabled) }
let_it_be(:approver) { create(:user) } let_it_be(:approver) { create(:user) }
let(:feature_flag) { true }
let(:draft_status) { true }
let(:blocked_status) { true }
let(:discussions_status) { true }
let(:additional_feature_flag) { true }
let(:pipeline_status) { :running }
let(:approvals_required) { 1 }
before do before do
create(:ci_pipeline, pipeline_status, create(:ci_pipeline, pipeline_status,
...@@ -25,41 +32,33 @@ ...@@ -25,41 +32,33 @@
mr_merge_if_green_enabled.update_head_pipeline mr_merge_if_green_enabled.update_head_pipeline
approval_rule.users << approver approval_rule.users << approver
stub_feature_flags(merge_when_checks_pass: feature_flag,
additional_merge_when_checks_ready: additional_feature_flag)
mr_merge_if_green_enabled.update!(title: 'Draft: check') if draft_status
allow(mr_merge_if_green_enabled).to receive(:merge_blocked_by_other_mrs?).and_return(blocked_status)
allow(mr_merge_if_green_enabled).to receive(:mergeable_discussions_state?).and_return(discussions_status)
end end
context 'when feature flag "merge_when_checks_pass" is enabled' do where(:pipeline_status, :approvals_required, :draft_status, :blocked_status, :discussions_status,
before do :additional_feature_flag, :result) do
stub_feature_flags(merge_when_checks_pass: project, additional_merge_when_checks_ready: additional_feature_flag) :running | 0 | true | true | false | true | true
mr_merge_if_green_enabled.update!(title: 'Draft: check') if draft_status :running | 0 | false | false | true | true | true
allow(mr_merge_if_green_enabled).to receive(:merge_blocked_by_other_mrs?).and_return(blocked_status) :success | 0 | false | false | true | true | false
allow(mr_merge_if_green_enabled).to receive(:mergeable_discussions_state?).and_return(discussions_status) :success | 0 | true | true | false | true | true
end :success | 0 | true | true | true | false | false
:running | 1 | true | true | false | true | true
where(:pipeline_status, :approvals_required, :draft_status, :blocked_status, :discussions_status, :success | 1 | true | true | false | true | true
:additional_feature_flag, :result) do :success | 1 | false | false | true | true | true
:running | 0 | true | true | false | true | true :running | 1 | false | false | true | true | true
:running | 0 | false | false | true | true | true end
:success | 0 | false | false | true | true | false
:success | 0 | true | true | false | true | true
:success | 0 | true | true | true | false | false
:running | 1 | true | true | false | true | true
:success | 1 | true | true | false | true | true
:success | 1 | false | false | true | true | true
:running | 1 | false | false | true | true | true
end
with_them do with_them do
it { is_expected.to eq result } it { is_expected.to eq result }
end
end end
context 'when feature flags merge_when_checks_pass and additional_merge_when_checks_ready are disabled"' do context 'when feature flags merge_when_checks_pass and additional_merge_when_checks_ready are disabled"' do
before do let(:additional_feature_flag) { false }
stub_feature_flags(merge_when_checks_pass: false, additional_merge_when_checks_ready: false) let(:feature_flag) { false }
mr_merge_if_green_enabled.update!(title: 'Draft: check') if draft_status
allow(mr_merge_if_green_enabled).to receive(:merge_blocked_by_other_mrs?).and_return(blocked_status)
allow(mr_merge_if_green_enabled).to receive(:mergeable_discussions_state?).and_return(discussions_status)
end
where(:pipeline_status, :approvals_required, :draft_status, :blocked_status, :discussions_status, :result) do where(:pipeline_status, :approvals_required, :draft_status, :blocked_status, :discussions_status, :result) do
:running | 0 | true | true | false | false :running | 0 | true | true | false | false
...@@ -96,6 +95,14 @@ ...@@ -96,6 +95,14 @@
it { is_expected.to eq false } it { is_expected.to eq false }
end end
context 'when merge trains are enabled' do
before do
allow(mr_merge_if_green_enabled.project).to receive(:merge_trains_enabled?).and_return(true)
end
it { is_expected.to eq false }
end
end end
describe "#execute" do describe "#execute" do
......
0% 加载中 .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册