Commit e96b8ef4 authored by Rémy Coutable's avatar Rémy Coutable

New Repository#insights_config method

Signed-off-by: default avatarRémy Coutable <remy@rymai.me>
parent 0be93623
......@@ -39,7 +39,8 @@ class Repository
changelog license_blob license_key gitignore
gitlab_ci_yml branch_names tag_names branch_count
tag_count avatar exists? root_ref has_visible_content?
issue_template_names merge_request_template_names xcode_project?).freeze
issue_template_names merge_request_template_names xcode_project?
insights_config).freeze
# Methods that use cache_method but only memoize the value
MEMOIZED_CACHED_METHODS = %i(license).freeze
......@@ -57,7 +58,8 @@ class Repository
avatar: :avatar,
issue_template: :issue_template_names,
merge_request_template: :merge_request_template_names,
xcode_config: :xcode_project?
xcode_config: :xcode_project?,
insights_config: :insights_config
}.freeze
def initialize(full_path, project, disk_path: nil, is_wiki: false)
......@@ -663,6 +665,11 @@ class Repository
end
cache_method :xcode_project?
def insights_config
file_on_head(:insights_config)
end
cache_method :insights_config
def head_commit
@head_commit ||= commit(self.root_ref)
end
......
......@@ -22,6 +22,7 @@ module Gitlab
gitignore: '.gitignore',
gitlab_ci: '.gitlab-ci.yml',
route_map: '.gitlab/route-map.yml',
insights_config: '.gitlab/insights.yml',
# Dependency files
cartfile: %r{\ACartfile[^/]*\z},
......
......@@ -77,6 +77,10 @@ describe Gitlab::FileDetector do
expect(described_class.type_of('.gitlab/merge_request_templates/foo.md')).to eq(:merge_request_template)
end
it 'returns the type of an Insights config file' do
expect(described_class.type_of('.gitlab/insights.yml')).to eq(:insights_config)
end
it 'returns nil for an unknown file' do
expect(described_class.type_of('foo.txt')).to be_nil
end
......
......@@ -1616,7 +1616,8 @@ describe Repository do
:has_visible_content?,
:issue_template_names,
:merge_request_template_names,
:xcode_project?
:xcode_project?,
:insights_config
])
repository.after_change_head
......@@ -1882,6 +1883,26 @@ describe Repository do
end
end
describe "#insights_config", :use_clean_rails_memory_store_caching do
it 'returns a valid Insights config file' do
files = [TestBlob.new('file'), TestBlob.new('.gitlab/insights.yml')]
expect(repository.tree).to receive(:blobs).and_return(files)
expect(repository.insights_config.path).to eq('.gitlab/insights.yml')
end
it 'returns nil if does not exist' do
expect(repository.tree).to receive(:blobs).and_return([])
expect(repository.insights_config).to be_nil
end
it 'returns nil for an empty repository' do
allow(repository).to receive(:root_ref).and_raise(Gitlab::Git::Repository::NoRepository)
expect(repository.insights_config).to be_nil
end
end
describe "#keep_around" do
it "does not fail if we attempt to reference bad commit" do
expect(repository.kept_around?('abc1234')).to be_falsey
......
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