diff --git a/lib/gitlab/quick_actions/merge_request_actions.rb b/lib/gitlab/quick_actions/merge_request_actions.rb index 842d4ef482bfffbe939e4e836a74280c47321fbf..f7c0f63b60e3e3958d4d004b6e520d4fe7982f84 100644 --- a/lib/gitlab/quick_actions/merge_request_actions.rb +++ b/lib/gitlab/quick_actions/merge_request_actions.rb @@ -23,7 +23,9 @@ module MergeRequestActions end end execution_message do - if preferred_strategy = preferred_auto_merge_strategy(quick_action_target) + if params[:merge_request_diff_head_sha].blank? + _("Merge request diff sha parameter is required for the merge quick action.") + elsif preferred_strategy = preferred_auto_merge_strategy(quick_action_target) _("Scheduled to merge this merge request (%{strategy}).") % { strategy: preferred_strategy.humanize } else _('Merged this merge request.') @@ -35,6 +37,8 @@ module MergeRequestActions merge_orchestration_service.can_merge?(quick_action_target) end command :merge do + next unless params[:merge_request_diff_head_sha].present? + @updates[:merge] = params[:merge_request_diff_head_sha] end diff --git a/locale/gitlab.pot b/locale/gitlab.pot index 5f040ea020347a457d253f30d6741a5f546dfb18..3d714035d5ddc2fec55d1b68d84aaf773d6ddee5 100644 --- a/locale/gitlab.pot +++ b/locale/gitlab.pot @@ -23066,6 +23066,9 @@ msgstr "" msgid "Merge request dependencies" msgstr "" +msgid "Merge request diff sha parameter is required for the merge quick action." +msgstr "" + msgid "Merge request events" msgstr "" diff --git a/spec/services/quick_actions/interpret_service_spec.rb b/spec/services/quick_actions/interpret_service_spec.rb index afeb95a3ca3850e121b5a00358bd06ea85c17777..8000c7efb2b1bbc4444be756c305fbdc775fdb14 100644 --- a/spec/services/quick_actions/interpret_service_spec.rb +++ b/spec/services/quick_actions/interpret_service_spec.rb @@ -799,10 +799,9 @@ let(:project) { repository_project } let(:service) { described_class.new(project, developer, {}) } - it 'precheck passes and returns merge command' do - _, updates, _ = service.execute('/merge', merge_request) - - expect(updates).to eq(merge: nil) + it_behaves_like 'failed command', 'Merge request diff sha parameter is required for the merge quick action.' do + let(:content) { "/merge" } + let(:issuable) { merge_request } end end