2012-10-13 13:27:15 +02:00
|
|
|
require 'spec_helper'
|
|
|
|
|
|
|
|
describe GitStats::GitData::Repo do
|
2012-10-16 20:52:22 +02:00
|
|
|
let(:repo) { build(:repo) }
|
2012-10-19 16:39:39 +02:00
|
|
|
let(:expected_authors) { [
|
|
|
|
build(:author, repo: repo, name: "John Doe", email: "john.doe@gmail.com"),
|
|
|
|
build(:author, repo: repo, name: "Joe Doe", email: "joe.doe@gmail.com")
|
|
|
|
] }
|
2012-10-13 13:27:15 +02:00
|
|
|
|
2012-10-19 15:51:24 +02:00
|
|
|
describe 'commit range' do
|
|
|
|
it 'should return HEAD by default' do
|
|
|
|
repo.commit_range.should == 'HEAD'
|
|
|
|
end
|
|
|
|
|
|
|
|
it 'should return last_commit if it was given' do
|
2012-10-19 17:35:33 +02:00
|
|
|
repo = build(:repo, last_commit_hash: 'abc')
|
2012-10-19 15:51:24 +02:00
|
|
|
repo.commit_range.should == 'abc'
|
|
|
|
end
|
|
|
|
|
|
|
|
it 'should return range from first_commit to HEAD if first_commit was given' do
|
2012-10-19 17:35:33 +02:00
|
|
|
repo = build(:repo, first_commit_hash: 'abc')
|
2012-10-19 15:51:24 +02:00
|
|
|
repo.commit_range.should == 'abc..HEAD'
|
|
|
|
end
|
|
|
|
|
|
|
|
it 'should return range from first to last commit if both were given' do
|
2012-10-19 17:35:33 +02:00
|
|
|
repo = build(:repo, first_commit_hash: 'abc', last_commit_hash: 'def')
|
2012-10-19 15:51:24 +02:00
|
|
|
repo.commit_range.should == 'abc..def'
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2012-10-13 13:27:15 +02:00
|
|
|
describe 'git output parsing' do
|
2012-10-19 16:57:49 +02:00
|
|
|
before do
|
|
|
|
repo.should_receive(:run).with('git shortlog -se HEAD').and_return(" 156 John Doe <john.doe@gmail.com>
|
2012-10-13 13:27:15 +02:00
|
|
|
53 Joe Doe <joe.doe@gmail.com>
|
2012-10-16 21:31:25 +02:00
|
|
|
")
|
2012-10-19 16:57:49 +02:00
|
|
|
end
|
2012-10-13 13:27:15 +02:00
|
|
|
|
2012-10-19 16:57:49 +02:00
|
|
|
it 'should parse git shortlog output to authors hash' do
|
2012-10-16 21:31:25 +02:00
|
|
|
repo.authors.should == expected_authors
|
2012-10-13 13:27:15 +02:00
|
|
|
end
|
|
|
|
|
2012-10-13 14:31:52 +02:00
|
|
|
it 'should parse git revlist output to date sorted commits array' do
|
2012-10-19 16:57:49 +02:00
|
|
|
repo.should_receive(:run).with('git rev-list --pretty=format:"%h|%at|%ai|%aE" HEAD | grep -v commit').and_return(
|
|
|
|
"e4412c3|1348603824|2012-09-25 22:10:24 +0200|john.doe@gmail.com
|
2012-10-13 13:27:15 +02:00
|
|
|
ce34874|1347482927|2012-09-12 22:48:47 +0200|joe.doe@gmail.com
|
|
|
|
5eab339|1345835073|2012-08-24 21:04:33 +0200|john.doe@gmail.com
|
2012-10-16 21:31:25 +02:00
|
|
|
")
|
|
|
|
|
2012-10-13 14:31:52 +02:00
|
|
|
repo.commits.should == [
|
|
|
|
GitStats::GitData::Commit.new(
|
|
|
|
repo: repo, hash: "5eab339", stamp: "1345835073", date: DateTime.parse("2012-08-24 21:04:33 +0200"),
|
2012-10-19 16:39:39 +02:00
|
|
|
author: repo.authors.by_email("john.doe@gmail.com")),
|
2012-10-13 14:31:52 +02:00
|
|
|
GitStats::GitData::Commit.new(
|
2012-10-13 13:27:15 +02:00
|
|
|
repo: repo, hash: "ce34874", stamp: "1347482927", date: DateTime.parse("2012-09-12 22:48:47 +0200"),
|
2012-10-19 16:39:39 +02:00
|
|
|
author: repo.authors.by_email("joe.doe@gmail.com")),
|
2012-10-13 14:31:52 +02:00
|
|
|
GitStats::GitData::Commit.new(
|
|
|
|
repo: repo, hash: "e4412c3", stamp: "1348603824", date: DateTime.parse("2012-09-25 22:10:24 +0200"),
|
2012-10-19 16:39:39 +02:00
|
|
|
author: repo.authors.by_email("john.doe@gmail.com"))
|
2012-10-13 14:31:52 +02:00
|
|
|
]
|
2012-10-13 13:27:15 +02:00
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|