diff options
author | Luke Duncalfe <lduncalfe@eml.cc> | 2019-04-08 21:59:12 +1200 |
---|---|---|
committer | Luke Duncalfe <lduncalfe@eml.cc> | 2019-04-09 10:57:04 +1200 |
commit | 3c40c98e263328ceb11a008dbec108362e727dbc (patch) | |
tree | affc98567eed0823cf1d9d6b8b9676c330687056 | |
parent | e73f537cb5097e85849110bafe184cb89e3bbc22 (diff) | |
download | gitlab-ce-3c40c98e263328ceb11a008dbec108362e727dbc.tar.gz |
Feature flag for merge requestion push options
https://gitlab.com/gitlab-org/gitlab-ce/issues/43263
https://gitlab.com/gitlab-org/gitlab-ce/issues/53198
-rw-r--r-- | lib/api/internal.rb | 6 | ||||
-rw-r--r-- | spec/requests/api/internal_spec.rb | 14 |
2 files changed, 18 insertions, 2 deletions
diff --git a/lib/api/internal.rb b/lib/api/internal.rb index 224aaaaf006..00f0bbab231 100644 --- a/lib/api/internal.rb +++ b/lib/api/internal.rb @@ -264,8 +264,10 @@ module API PostReceive.perform_async(params[:gl_repository], params[:identifier], params[:changes], push_options.as_json) - mr_options = push_options.get(:merge_request) - output.merge!(process_mr_push_options(mr_options, project, user, params[:changes])) if mr_options.present? + if Feature.enabled?(:mr_push_options, default_enabled: true) + mr_options = push_options.get(:merge_request) + output.merge!(process_mr_push_options(mr_options, project, user, params[:changes])) if mr_options.present? + end broadcast_message = BroadcastMessage.current&.last&.message reference_counter_decreased = Gitlab::ReferenceCounter.new(params[:gl_repository]).decrease diff --git a/spec/requests/api/internal_spec.rb b/spec/requests/api/internal_spec.rb index 26645ff0a44..1ce8f520962 100644 --- a/spec/requests/api/internal_spec.rb +++ b/spec/requests/api/internal_spec.rb @@ -995,6 +995,20 @@ describe API::Internal do expect(json_response['warnings']).to eq('Error encountered with push options \'merge_request.create\': my error') end + + context 'when the feature is disabled' do + it 'does not invoke MergeRequests::PushOptionsHandlerService' do + Feature.disable(:mr_push_options) + + expect(MergeRequests::PushOptionsHandlerService).to receive(:new) + + expect do + post api('/internal/post_receive'), params: valid_params + end.not_to change { MergeRequest.count } + + Feature.enable(:mr_push_options) + end + end end context 'broadcast message exists' do |