Skip to content
Snippets Groups Projects
Commit 81a21e57 authored by Robert Speicher's avatar Robert Speicher
Browse files

CommitRange improvements

parent 6bac823a
No related branches found
No related tags found
No related merge requests found
Loading
Loading
@@ -45,12 +45,10 @@ class CommitRange
raise ArgumentError, "invalid CommitRange string format: #{range_string}"
end
 
@inclusive = range_string !~ /\.{3}/
@inclusive = !range_string.include?('...')
@sha_from, @notation, @sha_to = range_string.split(/(\.{2,3})/, 2)
 
@project = project
@_commit_map = {}
end
 
def inspect
Loading
Loading
@@ -63,7 +61,7 @@ class CommitRange
# Returns `[nil, nil]` if `valid_commits?` is falsey
def to_a
if valid_commits?
[commit(sha_from), commit(sha_to)]
[commit_from, commit_to]
else
[nil, nil]
end
Loading
Loading
@@ -104,25 +102,24 @@ class CommitRange
return nil unless project.present?
return false unless project.valid_repo?
 
commit(sha_from).present? && commit(sha_to).present?
commit_from.present? && commit_to.present?
end
 
def persisted?
true
end
 
private
def commit_from
@commit_from ||= project.repository.commit(sha_from_as_param)
end
 
def sha_from_as_param
sha_from + (inclusive? ? '^' : '')
def commit_to
@commit_to ||= project.repository.commit(sha_to)
end
 
def commit(sha)
unless @_commit_map[sha]
# FIXME (rspeicher): Law of Demeter
@_commit_map[sha] = project.repository.commit(sha)
end
private
 
@_commit_map[sha]
def sha_from_as_param
sha_from + (inclusive? ? '^' : '')
end
end
Loading
Loading
@@ -18,8 +18,8 @@ describe CommitRange do
 
before do
expect(range).to receive(:valid_commits?).and_return(true)
allow(range).to receive(:commit).with(sha_from).and_return(commit1)
allow(range).to receive(:commit).with(sha_to).and_return(commit2)
allow(range).to receive(:commit_from).and_return(commit1)
allow(range).to receive(:commit_to).and_return(commit2)
end
 
it 'returns an Array of Commits' do
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