Skip to content
Snippets Groups Projects
Commit 886f00bc authored by Stan Hu's avatar Stan Hu
Browse files

Backport commit author changes from CE

This backports the changes made in EE to fix merge request approvers
from https://gitlab.com/gitlab-org/gitlab-ee/merge_requests/9574.
parent d9328cb3
No related branches found
No related tags found
No related merge requests found
Loading
Loading
@@ -20,8 +20,8 @@ class CommitCollection
commits.each(&block)
end
 
def committers
emails = without_merge_commits.map(&:committer_email).uniq
def authors
emails = without_merge_commits.map(&:author_email).uniq
 
User.by_any_email(emails)
end
Loading
Loading
Loading
Loading
@@ -286,12 +286,12 @@ class MergeRequest < ActiveRecord::Base
work_in_progress?(title) ? title : "WIP: #{title}"
end
 
def committers
@committers ||= commits.committers
def commit_authors
@commit_authors ||= commits.authors
end
 
def authors
User.from_union([committers, User.where(id: self.author_id)])
User.from_union([commit_authors, User.where(id: self.author_id)])
end
 
# Verifies if title has changed not taking into account WIP prefix
Loading
Loading
Loading
Loading
@@ -12,26 +12,26 @@ describe CommitCollection do
end
end
 
describe '.committers' do
describe '.authors' do
it 'returns a relation of users when users are found' do
user = create(:user, email: commit.committer_email.upcase)
user = create(:user, email: commit.author_email.upcase)
collection = described_class.new(project, [commit])
 
expect(collection.committers).to contain_exactly(user)
expect(collection.authors).to contain_exactly(user)
end
 
it 'returns empty array when committers cannot be found' do
it 'returns empty array when authors cannot be found' do
collection = described_class.new(project, [commit])
 
expect(collection.committers).to be_empty
expect(collection.authors).to be_empty
end
 
it 'excludes authors of merge commits' do
commit = project.commit("60ecb67744cb56576c30214ff52294f8ce2def98")
create(:user, email: commit.committer_email.upcase)
create(:user, email: commit.author_email.upcase)
collection = described_class.new(project, [commit])
 
expect(collection.committers).to be_empty
expect(collection.authors).to be_empty
end
end
 
Loading
Loading
Loading
Loading
@@ -435,6 +435,7 @@ describe MergeRequest do
it 'does not cache issues from external trackers' do
issue = ExternalIssue.new('JIRA-123', subject.project)
commit = double('commit1', safe_message: "Fixes #{issue.to_reference}")
allow(subject).to receive(:commits).and_return([commit])
 
expect { subject.cache_merge_request_closes_issues!(subject.author) }.not_to raise_error
Loading
Loading
@@ -1023,23 +1024,23 @@ describe MergeRequest do
end
end
 
describe '#committers' do
it 'returns all the committers of every commit in the merge request' do
users = subject.commits.map(&:committer_email).uniq.map do |email|
describe '#commit_authors' do
it 'returns all the authors of every commit in the merge request' do
users = subject.commits.map(&:author_email).uniq.map do |email|
create(:user, email: email)
end
 
expect(subject.committers).to match_array(users)
expect(subject.commit_authors).to match_array(users)
end
 
it 'returns an empty array if no committer is associated with a user' do
expect(subject.committers).to be_empty
it 'returns an empty array if no author is associated with a user' do
expect(subject.commit_authors).to be_empty
end
end
 
describe '#authors' do
it 'returns a list with all the committers in the merge request and author' do
users = subject.commits.map(&:committer_email).uniq.map do |email|
it 'returns a list with all the commit authors in the merge request and author' do
users = subject.commits.map(&:author_email).uniq.map do |email|
create(:user, email: email)
end
 
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment