diff options
author | Lin Jen-Shin <godfat@godfat.org> | 2019-03-18 14:03:53 +0000 |
---|---|---|
committer | Lin Jen-Shin <godfat@godfat.org> | 2019-03-18 14:03:53 +0000 |
commit | b24c0c8dcf39d967ec2bce343e0c1a7dd4dd5eb9 (patch) | |
tree | bbc1cae25b3cadbb68c53fcfc26d8d94cac43041 | |
parent | bbbaa7078b62621f86030502bb1b317edea93039 (diff) | |
parent | e96b8ef4dbe99cff9f198bd25d32a8b3e1b37f8d (diff) | |
download | gitlab-ce-b24c0c8dcf39d967ec2bce343e0c1a7dd4dd5eb9.tar.gz |
Merge branch 'ce-10421-implement-the-retrieval-reading-of-the-insights-file-to-be-used-in-the-insights-controller' into 'master'
New Repository#insights_config method
Closes gitlab-ee#10421
See merge request gitlab-org/gitlab-ce!26183
-rw-r--r-- | app/models/repository.rb | 11 | ||||
-rw-r--r-- | lib/gitlab/file_detector.rb | 1 | ||||
-rw-r--r-- | spec/lib/gitlab/file_detector_spec.rb | 4 | ||||
-rw-r--r-- | spec/models/repository_spec.rb | 23 |
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 |