Add latest changes from gitlab-org/gitlab@master

This commit is contained in:
GitLab Bot 2019-10-06 06:06:24 +00:00
parent 7b871b3498
commit b83314141e
3 changed files with 15 additions and 22 deletions

View file

@ -568,7 +568,7 @@ class Repository
delegate :branch_count, :tag_count, :has_visible_content?, to: :raw_repository
cache_method :branch_count, fallback: 0
cache_method :tag_count, fallback: 0
cache_method :has_visible_content?, fallback: false
cache_method_asymmetrically :has_visible_content?
def avatar
# n+1: https://gitlab.com/gitlab-org/gitlab-foss/issues/38327

View file

@ -0,0 +1,5 @@
---
title: Use cache_method_asymmetrically with Repository#has_visible_content?
merge_request: 17975
author:
type: fixed

View file

@ -1193,33 +1193,21 @@ describe Repository do
end
describe '#has_visible_content?' do
before do
# If raw_repository.has_visible_content? gets called more than once then
# caching is broken. We don't want that.
it 'delegates to raw_repository when true' do
expect(repository.raw_repository).to receive(:has_visible_content?)
.once
.and_return(result)
.and_return(true)
expect(repository.has_visible_content?).to eq(true)
end
context 'when true' do
let(:result) { true }
it 'delegates to raw_repository when false' do
expect(repository.raw_repository).to receive(:has_visible_content?)
.and_return(false)
it 'returns true and caches it' do
expect(repository.has_visible_content?).to eq(true)
# Second call hits the cache
expect(repository.has_visible_content?).to eq(true)
end
expect(repository.has_visible_content?).to eq(false)
end
context 'when false' do
let(:result) { false }
it 'returns false and caches it' do
expect(repository.has_visible_content?).to eq(false)
# Second call hits the cache
expect(repository.has_visible_content?).to eq(false)
end
end
it_behaves_like 'asymmetric cached method', :has_visible_content?
end
describe '#branch_exists?' do