Commit 5d74c95c authored by Stan Hu's avatar Stan Hu Committed by Oswaldo Ferreira

Check that source and target branch exist

This ensures the return value is consistent if the source and/or
branch do not exist.
parent 54d64ec9
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
require 'securerandom' require 'securerandom'
# Compare 2 refs for one repo or between repositories # Compare 2 refs for one repo or between repositories
# and return Gitlab::Git::Compare object that responds to commits and diffs # and return Compare object that responds to commits and diffs
class CompareService class CompareService
attr_reader :start_project, :start_ref_name attr_reader :start_project, :start_ref_name
...@@ -15,7 +15,7 @@ class CompareService ...@@ -15,7 +15,7 @@ class CompareService
def execute(target_project, target_ref, base_sha: nil, straight: false) def execute(target_project, target_ref, base_sha: nil, straight: false)
raw_compare = target_project.repository.compare_source_branch(target_ref, start_project.repository, start_ref_name, straight: straight) raw_compare = target_project.repository.compare_source_branch(target_ref, start_project.repository, start_ref_name, straight: straight)
return unless raw_compare return unless raw_compare && raw_compare.base && raw_compare.head
Compare.new(raw_compare, Compare.new(raw_compare,
target_project, target_project,
......
...@@ -82,7 +82,7 @@ describe Projects::CompareController do ...@@ -82,7 +82,7 @@ describe Projects::CompareController do
show_request show_request
expect(response).to be_success expect(response).to be_success
expect(assigns(:diffs).diff_files.to_a).to eq([]) expect(assigns(:diffs)).to eq([])
expect(assigns(:commits)).to eq([]) expect(assigns(:commits)).to eq([])
end end
end end
......
...@@ -1977,7 +1977,7 @@ describe Gitlab::Git::Repository, :seed_helper do ...@@ -1977,7 +1977,7 @@ describe Gitlab::Git::Repository, :seed_helper do
expect(compare.commits.count).to be > 0 expect(compare.commits.count).to be > 0
end end
it 'returns nil when source ref does not exist' do it 'returns empty commits when source ref does not exist' do
compare = repository.compare_source_branch('master', repository, 'non-existent-branch', straight: false) compare = repository.compare_source_branch('master', repository, 'non-existent-branch', straight: false)
expect(compare.commits).to be_empty expect(compare.commits).to be_empty
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment