summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRémy Coutable <remy@rymai.me>2019-03-14 17:47:21 +0100
committerRémy Coutable <remy@rymai.me>2019-03-18 10:43:36 +0100
commite96b8ef4dbe99cff9f198bd25d32a8b3e1b37f8d (patch)
tree8cdcffa23e9c3ec4637c446fbe94e05bc7e7b16d
parent0be9362393d60b19b6cea2c173ea247346001cd3 (diff)
downloadgitlab-ce-e96b8ef4dbe99cff9f198bd25d32a8b3e1b37f8d.tar.gz
New Repository#insights_config method
Signed-off-by: Rémy Coutable <remy@rymai.me>
-rw-r--r--app/models/repository.rb11
-rw-r--r--lib/gitlab/file_detector.rb1
-rw-r--r--spec/lib/gitlab/file_detector_spec.rb4
-rw-r--r--spec/models/repository_spec.rb23
4 files changed, 36 insertions, 3 deletions
diff --git a/app/models/repository.rb b/app/models/repository.rb
index ff355295862..0d60b5a6434 100644
--- a/app/models/repository.rb
+++ b/app/models/repository.rb
@@ -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
diff --git a/lib/gitlab/file_detector.rb b/lib/gitlab/file_detector.rb
index 2770469ca9f..4678ef792c0 100644
--- a/lib/gitlab/file_detector.rb
+++ b/lib/gitlab/file_detector.rb
@@ -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},
diff --git a/spec/lib/gitlab/file_detector_spec.rb b/spec/lib/gitlab/file_detector_spec.rb
index 4ba9094b24e..933366fd855 100644
--- a/spec/lib/gitlab/file_detector_spec.rb
+++ b/spec/lib/gitlab/file_detector_spec.rb
@@ -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
diff --git a/spec/models/repository_spec.rb b/spec/models/repository_spec.rb
index 6599b4e765a..759dcd22b42 100644
--- a/spec/models/repository_spec.rb
+++ b/spec/models/repository_spec.rb
@@ -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