nil-check Repository::is_ancestor?

This commit is contained in:
Kim Carlbäcker 2017-06-08 00:47:10 +00:00 committed by Douwe Maan
parent 27f68edd35
commit 7a07ecebaf
2 changed files with 35 additions and 9 deletions

View File

@ -946,6 +946,8 @@ class Repository
end
def is_ancestor?(ancestor_id, descendant_id)
return false if ancestor_id.nil? || descendant_id.nil?
Gitlab::GitalyClient.migrate(:is_ancestor) do |is_enabled|
if is_enabled
raw_repository.is_ancestor?(ancestor_id, descendant_id)

View File

@ -1905,19 +1905,43 @@ describe Repository, models: true do
end
describe '#is_ancestor?' do
context 'Gitaly is_ancestor feature enabled' do
let(:commit) { repository.commit }
let(:ancestor) { commit.parents.first }
let(:commit) { repository.commit }
let(:ancestor) { commit.parents.first }
before do
allow(Gitlab::GitalyClient).to receive(:enabled?).and_return(true)
allow(Gitlab::GitalyClient).to receive(:feature_enabled?).with(:is_ancestor).and_return(true)
context 'with Gitaly enabled' do
it 'it is an ancestor' do
expect(repository.is_ancestor?(ancestor.id, commit.id)).to eq(true)
end
it "asks Gitaly server if it's an ancestor" do
expect_any_instance_of(Gitlab::GitalyClient::Commit).to receive(:is_ancestor).with(ancestor.id, commit.id)
it 'it is not an ancestor' do
expect(repository.is_ancestor?(commit.id, ancestor.id)).to eq(false)
end
repository.is_ancestor?(ancestor.id, commit.id)
it 'returns false on nil-values' do
expect(repository.is_ancestor?(nil, commit.id)).to eq(false)
expect(repository.is_ancestor?(ancestor.id, nil)).to eq(false)
expect(repository.is_ancestor?(nil, nil)).to eq(false)
end
end
context 'with Gitaly disabled' do
before do
allow(Gitlab::GitalyClient).to receive(:enabled?).and_return(false)
allow(Gitlab::GitalyClient).to receive(:feature_enabled?).with(:is_ancestor).and_return(false)
end
it 'it is an ancestor' do
expect(repository.is_ancestor?(ancestor.id, commit.id)).to eq(true)
end
it 'it is not an ancestor' do
expect(repository.is_ancestor?(commit.id, ancestor.id)).to eq(false)
end
it 'returns false on nil-values' do
expect(repository.is_ancestor?(nil, commit.id)).to eq(false)
expect(repository.is_ancestor?(ancestor.id, nil)).to eq(false)
expect(repository.is_ancestor?(nil, nil)).to eq(false)
end
end
end