summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStan Hu <stanhu@gmail.com>2019-04-14 07:26:03 -0700
committerOswaldo Ferreira <>2019-04-18 22:01:51 -0300
commit5d74c95c988cdd9c1c761de3a78c3dc191e4fe52 (patch)
treef6d0c19e4b591a08fc50ae1b2d4f9252f59ea747
parent54d64ec9f62f5c271b3ed649530a3a2eaa482206 (diff)
downloadgitlab-ce-5d74c95c988cdd9c1c761de3a78c3dc191e4fe52.tar.gz
Check that source and target branch exist
This ensures the return value is consistent if the source and/or branch do not exist.
-rw-r--r--app/services/compare_service.rb4
-rw-r--r--spec/controllers/projects/compare_controller_spec.rb2
-rw-r--r--spec/lib/gitlab/git/repository_spec.rb2
3 files changed, 4 insertions, 4 deletions
diff --git a/app/services/compare_service.rb b/app/services/compare_service.rb
index 3adf8a0c1a1..3f0aedfbfb2 100644
--- a/app/services/compare_service.rb
+++ b/app/services/compare_service.rb
@@ -3,7 +3,7 @@
require 'securerandom'
# 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
attr_reader :start_project, :start_ref_name
@@ -15,7 +15,7 @@ class CompareService
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)
- return unless raw_compare
+ return unless raw_compare && raw_compare.base && raw_compare.head
Compare.new(raw_compare,
target_project,
diff --git a/spec/controllers/projects/compare_controller_spec.rb b/spec/controllers/projects/compare_controller_spec.rb
index 1818809518d..92380a2bf09 100644
--- a/spec/controllers/projects/compare_controller_spec.rb
+++ b/spec/controllers/projects/compare_controller_spec.rb
@@ -82,7 +82,7 @@ describe Projects::CompareController do
show_request
expect(response).to be_success
- expect(assigns(:diffs).diff_files.to_a).to eq([])
+ expect(assigns(:diffs)).to eq([])
expect(assigns(:commits)).to eq([])
end
end
diff --git a/spec/lib/gitlab/git/repository_spec.rb b/spec/lib/gitlab/git/repository_spec.rb
index a98b04feb9c..aa800db4f16 100644
--- a/spec/lib/gitlab/git/repository_spec.rb
+++ b/spec/lib/gitlab/git/repository_spec.rb
@@ -1977,7 +1977,7 @@ describe Gitlab::Git::Repository, :seed_helper do
expect(compare.commits.count).to be > 0
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)
expect(compare.commits).to be_empty