Add changelog entry, improve specs and model code
This commit is contained in:
parent
476cf23fc3
commit
a64f1c7636
|
|
@ -17,6 +17,7 @@ v 8.7.0 (unreleased)
|
||||||
- Add links to CI setup documentation from project settings and builds pages
|
- Add links to CI setup documentation from project settings and builds pages
|
||||||
- Handle nil descriptions in Slack issue messages (Stan Hu)
|
- Handle nil descriptions in Slack issue messages (Stan Hu)
|
||||||
- Add default scope to projects to exclude projects pending deletion
|
- Add default scope to projects to exclude projects pending deletion
|
||||||
|
- Allow to close merge requests which source projects(forks) are deleted.
|
||||||
- Ensure empty recipients are rejected in BuildsEmailService
|
- Ensure empty recipients are rejected in BuildsEmailService
|
||||||
- API: Ability to filter milestones by state `active` and `closed` (Robert Schilling)
|
- API: Ability to filter milestones by state `active` and `closed` (Robert Schilling)
|
||||||
- Implement 'Groups View' as an option for dashboard preferences !3379 (Elias W.)
|
- Implement 'Groups View' as an option for dashboard preferences !3379 (Elias W.)
|
||||||
|
|
|
||||||
|
|
@ -128,7 +128,7 @@ class MergeRequest < ActiveRecord::Base
|
||||||
validates :target_project, presence: true
|
validates :target_project, presence: true
|
||||||
validates :target_branch, presence: true
|
validates :target_branch, presence: true
|
||||||
validates :merge_user, presence: true, if: :merge_when_build_succeeds?
|
validates :merge_user, presence: true, if: :merge_when_build_succeeds?
|
||||||
validate :validate_branches
|
validate :validate_branches, unless: :allow_broken
|
||||||
validate :validate_fork
|
validate :validate_fork
|
||||||
|
|
||||||
scope :by_branch, ->(branch_name) { where("(source_branch LIKE :branch) OR (target_branch LIKE :branch)", branch: branch_name) }
|
scope :by_branch, ->(branch_name) { where("(source_branch LIKE :branch) OR (target_branch LIKE :branch)", branch: branch_name) }
|
||||||
|
|
@ -213,14 +213,12 @@ class MergeRequest < ActiveRecord::Base
|
||||||
end
|
end
|
||||||
|
|
||||||
def validate_branches
|
def validate_branches
|
||||||
return if allow_broken
|
|
||||||
|
|
||||||
if target_project == source_project && target_branch == source_branch
|
if target_project == source_project && target_branch == source_branch
|
||||||
errors.add :branch_conflict, "You can not use same project/branch for source and target"
|
errors.add :branch_conflict, "You can not use same project/branch for source and target"
|
||||||
end
|
end
|
||||||
|
|
||||||
if opened? || reopened?
|
if opened? || reopened?
|
||||||
similar_mrs = self.target_project.merge_requests.where(source_branch: source_branch, target_branch: target_branch, source_project_id: source_project.id).opened
|
similar_mrs = self.target_project.merge_requests.where(source_branch: source_branch, target_branch: target_branch, source_project_id: source_project.try(:id)).opened
|
||||||
similar_mrs = similar_mrs.where('id not in (?)', self.id) if self.id
|
similar_mrs = similar_mrs.where('id not in (?)', self.id) if self.id
|
||||||
if similar_mrs.any?
|
if similar_mrs.any?
|
||||||
errors.add :validate_branches,
|
errors.add :validate_branches,
|
||||||
|
|
@ -346,12 +344,9 @@ class MergeRequest < ActiveRecord::Base
|
||||||
end
|
end
|
||||||
|
|
||||||
def hook_attrs
|
def hook_attrs
|
||||||
source_hook_attrs = source_project.hook_attrs if source_project.present?
|
|
||||||
target_hook_attrs = target_project.hook_attrs if target_project.present?
|
|
||||||
|
|
||||||
attrs = {
|
attrs = {
|
||||||
source: source_hook_attrs,
|
source: source_project.try(:hook_attrs),
|
||||||
target: target_hook_attrs,
|
target: target_project.hook_attrs,
|
||||||
last_commit: nil,
|
last_commit: nil,
|
||||||
work_in_progress: work_in_progress?
|
work_in_progress: work_in_progress?
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -161,17 +161,16 @@ describe Projects::MergeRequestsController do
|
||||||
context 'there is no source project' do
|
context 'there is no source project' do
|
||||||
let(:project) { create(:project) }
|
let(:project) { create(:project) }
|
||||||
let(:fork_project) { create(:forked_project_with_submodules) }
|
let(:fork_project) { create(:forked_project_with_submodules) }
|
||||||
let(:merge_request) { create(:merge_request_with_diffs, source_project: fork_project, source_branch: 'add-submodule-version-bump', target_branch: 'master', target_project: project) }
|
let(:merge_request) { create(:merge_request, source_project: fork_project, source_branch: 'add-submodule-version-bump', target_branch: 'master', target_project: project) }
|
||||||
|
|
||||||
before do
|
before do
|
||||||
fork_project.build_forked_project_link(forked_to_project_id: fork_project.id, forked_from_project_id: project.id)
|
fork_project.build_forked_project_link(forked_to_project_id: fork_project.id, forked_from_project_id: project.id)
|
||||||
fork_project.save
|
fork_project.save
|
||||||
merge_request.reload
|
merge_request.reload
|
||||||
|
fork_project.destroy
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'closes MR without errors' do
|
it 'closes MR without errors' do
|
||||||
fork_project.destroy
|
|
||||||
|
|
||||||
post :update,
|
post :update,
|
||||||
namespace_id: project.namespace.path,
|
namespace_id: project.namespace.path,
|
||||||
project_id: project.path,
|
project_id: project.path,
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue