diff options
author | Sean McGivern <sean@mcgivern.me.uk> | 2017-11-10 17:55:39 +0300 |
---|---|---|
committer | Felipe Artur <felipefac@gmail.com> | 2017-11-10 21:34:14 +0300 |
commit | f9dd9e1a38e86c275e9a15ac70b53f663619e95a (patch) | |
tree | 3a0275a704753253a275b915063f6b9f36e5ca70 /spec | |
parent | 7bacf9464ef18001a0d9504923af8489911496bf (diff) |
Merge branch 'issue_39773_be' into 'master'
Prevent fast forward merge when rebase is required
Closes #39773
See merge request gitlab-org/gitlab-ce!15296
Diffstat (limited to 'spec')
-rw-r--r-- | spec/services/merge_requests/merge_service_spec.rb | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/spec/services/merge_requests/merge_service_spec.rb b/spec/services/merge_requests/merge_service_spec.rb index 5cfdb5372f3..194b48bfcb3 100644 --- a/spec/services/merge_requests/merge_service_spec.rb +++ b/spec/services/merge_requests/merge_service_spec.rb @@ -239,6 +239,28 @@ describe MergeRequests::MergeService do expect(merge_request.merge_error).to include(error_message) expect(Rails.logger).to have_received(:error).with(a_string_matching(error_message)) end + + context "when fast-forward merge is not allowed" do + before do + allow_any_instance_of(Repository).to receive(:ancestor?).and_return(nil) + end + + %w(semi-linear ff).each do |merge_method| + it "logs and saves error if merge is #{merge_method} only" do + merge_method = 'rebase_merge' if merge_method == 'semi-linear' + merge_request.project.update(merge_method: merge_method) + error_message = 'Only fast-forward merge is allowed for your project. Please update your source branch' + allow(service).to receive(:execute_hooks) + + service.execute(merge_request) + + expect(merge_request).to be_open + expect(merge_request.merge_commit_sha).to be_nil + expect(merge_request.merge_error).to include(error_message) + expect(Rails.logger).to have_received(:error).with(a_string_matching(error_message)) + end + end + end end end end |