Merge branch 'issue_28051_2' into 'master'
Create compare object with default branch when target branch is missing Closes #28051 See merge request !9263
This commit is contained in:
commit
7bf28a4ada
3 changed files with 25 additions and 18 deletions
|
@ -2,18 +2,14 @@ module MergeRequests
|
||||||
class BuildService < MergeRequests::BaseService
|
class BuildService < MergeRequests::BaseService
|
||||||
def execute
|
def execute
|
||||||
self.merge_request = MergeRequest.new(params)
|
self.merge_request = MergeRequest.new(params)
|
||||||
merge_request.can_be_created = true
|
|
||||||
merge_request.compare_commits = []
|
merge_request.compare_commits = []
|
||||||
merge_request.source_project = find_source_project
|
merge_request.source_project = find_source_project
|
||||||
merge_request.target_project = find_target_project
|
merge_request.target_project = find_target_project
|
||||||
merge_request.target_branch = find_target_branch
|
merge_request.target_branch = find_target_branch
|
||||||
|
merge_request.can_be_created = branches_valid? && source_branch_specified? && target_branch_specified?
|
||||||
|
|
||||||
if branches_specified? && branches_valid?
|
compare_branches if branches_present?
|
||||||
compare_branches
|
assign_title_and_description if merge_request.can_be_created
|
||||||
assign_title_and_description
|
|
||||||
else
|
|
||||||
merge_request.can_be_created = false
|
|
||||||
end
|
|
||||||
|
|
||||||
merge_request
|
merge_request
|
||||||
end
|
end
|
||||||
|
@ -37,11 +33,17 @@ module MergeRequests
|
||||||
target_branch || target_project.default_branch
|
target_branch || target_project.default_branch
|
||||||
end
|
end
|
||||||
|
|
||||||
def branches_specified?
|
def source_branch_specified?
|
||||||
params[:source_branch] && params[:target_branch]
|
params[:source_branch].present?
|
||||||
|
end
|
||||||
|
|
||||||
|
def target_branch_specified?
|
||||||
|
params[:target_branch].present?
|
||||||
end
|
end
|
||||||
|
|
||||||
def branches_valid?
|
def branches_valid?
|
||||||
|
return false unless source_branch_specified? || target_branch_specified?
|
||||||
|
|
||||||
validate_branches
|
validate_branches
|
||||||
errors.blank?
|
errors.blank?
|
||||||
end
|
end
|
||||||
|
@ -55,8 +57,10 @@ module MergeRequests
|
||||||
target_branch
|
target_branch
|
||||||
)
|
)
|
||||||
|
|
||||||
merge_request.compare_commits = compare.commits
|
if compare
|
||||||
merge_request.compare = compare
|
merge_request.compare_commits = compare.commits
|
||||||
|
merge_request.compare = compare
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def validate_branches
|
def validate_branches
|
||||||
|
|
4
changelogs/unreleased/issue_28051_2.yml
Normal file
4
changelogs/unreleased/issue_28051_2.yml
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
---
|
||||||
|
title: Use default branch as target_branch when parameter is missing
|
||||||
|
merge_request:
|
||||||
|
author:
|
|
@ -44,15 +44,14 @@ describe MergeRequests::BuildService, services: true do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
context 'missing target branch' do
|
context 'when target branch is missing' do
|
||||||
let(:target_branch) { '' }
|
let(:target_branch) { nil }
|
||||||
|
let(:commits) { Commit.decorate([commit_1], project) }
|
||||||
|
|
||||||
it 'forbids the merge request from being created' do
|
it 'creates compare object with target branch as default branch' do
|
||||||
expect(merge_request.can_be_created).to eq(false)
|
expect(merge_request.can_be_created).to eq(false)
|
||||||
end
|
expect(merge_request.compare).to be_present
|
||||||
|
expect(merge_request.target_branch).to eq(project.default_branch)
|
||||||
it 'adds an error message to the merge request' do
|
|
||||||
expect(merge_request.errors).to contain_exactly('You must select source and target branch')
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue