summaryrefslogtreecommitdiff
path: root/spec
diff options
context:
space:
mode:
authorSean McGivern <sean@mcgivern.me.uk>2017-11-10 14:55:39 +0000
committerFelipe Artur <felipefac@gmail.com>2017-11-10 16:34:14 -0200
commitf9dd9e1a38e86c275e9a15ac70b53f663619e95a (patch)
tree3a0275a704753253a275b915063f6b9f36e5ca70 /spec
parent7bacf9464ef18001a0d9504923af8489911496bf (diff)
downloadgitlab-ce-f9dd9e1a38e86c275e9a15ac70b53f663619e95a.tar.gz
Merge branch 'issue_39773_be' into 'master'10-1-stable-patch-2
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.rb22
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