summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRémy Coutable <remy@rymai.me>2016-09-21 10:15:00 +0000
committerRémy Coutable <remy@rymai.me>2016-09-21 10:15:00 +0000
commita25ac8a89b839653e469693d77b931b158731cca (patch)
treeb1f5354d021a7c70b39164194028eeab10e87a47
parentdd12ffc006b6ad07d1c17b223ae9eea07912d2e1 (diff)
parent02d69091bc1d2ea4d14731b103efd5a5e2c9f040 (diff)
downloadgitlab-ce-a25ac8a89b839653e469693d77b931b158731cca.tar.gz
Merge branch 'add_spec_for_committer_hash' into 'master'
Add spec covering 'committer_hash' Adds a missing spec from changes added in !5822 See merge request !6433
-rw-r--r--CHANGELOG1
-rw-r--r--app/models/repository.rb2
-rw-r--r--lib/gitlab/git.rb2
-rw-r--r--spec/lib/gitlab/git_spec.rb45
4 files changed, 49 insertions, 1 deletions
diff --git a/CHANGELOG b/CHANGELOG
index 9370bdd17d2..effa46399ab 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -29,6 +29,7 @@ v 8.12.0 (unreleased)
- Instructions for enabling Git packfile bitmaps !6104
- Use Search::GlobalService.new in the `GET /projects/search/:query` endpoint
- Fix long comments in diffs messing with table width
+ - Add spec covering 'Gitlab::Git::committer_hash' !6433 (dandunckelman)
- Fix pagination on user snippets page
- Run CI builds with the permissions of users !5735
- Fix sorting of issues in API
diff --git a/app/models/repository.rb b/app/models/repository.rb
index 772c62a4124..51557228ab9 100644
--- a/app/models/repository.rb
+++ b/app/models/repository.rb
@@ -840,7 +840,7 @@ class Repository
def get_committer_and_author(user, email: nil, name: nil)
committer = user_to_committer(user)
- author = name && email ? Gitlab::Git::committer_hash(email: email, name: name) : committer
+ author = Gitlab::Git::committer_hash(email: email, name: name) || committer
{
author: author,
diff --git a/lib/gitlab/git.rb b/lib/gitlab/git.rb
index 3ab99360206..3cd515e4a3a 100644
--- a/lib/gitlab/git.rb
+++ b/lib/gitlab/git.rb
@@ -19,6 +19,8 @@ module Gitlab
end
def committer_hash(email:, name:)
+ return if email.nil? || name.nil?
+
{
email: email,
name: name,
diff --git a/spec/lib/gitlab/git_spec.rb b/spec/lib/gitlab/git_spec.rb
new file mode 100644
index 00000000000..219198eff60
--- /dev/null
+++ b/spec/lib/gitlab/git_spec.rb
@@ -0,0 +1,45 @@
+require 'spec_helper'
+
+describe Gitlab::Git, lib: true do
+ let(:committer_email) { FFaker::Internet.email }
+
+ # I have to remove periods from the end of the name
+ # This happened when the user's name had a suffix (i.e. "Sr.")
+ # This seems to be what git does under the hood. For example, this commit:
+ #
+ # $ git commit --author='Foo Sr. <foo@example.com>' -m 'Where's my trailing period?'
+ #
+ # results in this:
+ #
+ # $ git show --pretty
+ # ...
+ # Author: Foo Sr <foo@example.com>
+ # ...
+ let(:committer_name) { FFaker::Name.name.chomp("\.") }
+
+ describe 'committer_hash' do
+ it "returns a hash containing the given email and name" do
+ committer_hash = Gitlab::Git::committer_hash(email: committer_email, name: committer_name)
+
+ expect(committer_hash[:email]).to eq(committer_email)
+ expect(committer_hash[:name]).to eq(committer_name)
+ expect(committer_hash[:time]).to be_a(Time)
+ end
+
+ context 'when email is nil' do
+ it "returns nil" do
+ committer_hash = Gitlab::Git::committer_hash(email: nil, name: committer_name)
+
+ expect(committer_hash).to be_nil
+ end
+ end
+
+ context 'when name is nil' do
+ it "returns nil" do
+ committer_hash = Gitlab::Git::committer_hash(email: committer_email, name: nil)
+
+ expect(committer_hash).to be_nil
+ end
+ end
+ end
+end