Add Repository#xcode_project? method
This commit is contained in:
parent
2de674483a
commit
f6ecb72682
|
@ -37,7 +37,7 @@ class Repository
|
|||
changelog license_blob license_key gitignore koding_yml
|
||||
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).freeze
|
||||
issue_template_names merge_request_template_names xcode_project?).freeze
|
||||
|
||||
# Methods that use cache_method but only memoize the value
|
||||
MEMOIZED_CACHED_METHODS = %i(license).freeze
|
||||
|
@ -55,7 +55,8 @@ class Repository
|
|||
gitlab_ci: :gitlab_ci_yml,
|
||||
avatar: :avatar,
|
||||
issue_template: :issue_template_names,
|
||||
merge_request_template: :merge_request_template_names
|
||||
merge_request_template: :merge_request_template_names,
|
||||
xcode_config: :xcode_project?
|
||||
}.freeze
|
||||
|
||||
def initialize(full_path, project, disk_path: nil, is_wiki: false)
|
||||
|
@ -594,6 +595,11 @@ class Repository
|
|||
end
|
||||
cache_method :gitlab_ci_yml
|
||||
|
||||
def xcode_project?
|
||||
file_on_head(:xcode_config).present?
|
||||
end
|
||||
cache_method :xcode_project?
|
||||
|
||||
def head_commit
|
||||
@head_commit ||= commit(self.root_ref)
|
||||
end
|
||||
|
|
|
@ -14,6 +14,7 @@ module Gitlab
|
|||
avatar: /\Alogo\.(png|jpg|gif)\z/,
|
||||
issue_template: %r{\A\.gitlab/issue_templates/[^/]+\.md\z},
|
||||
merge_request_template: %r{\A\.gitlab/merge_request_templates/[^/]+\.md\z},
|
||||
xcode_config: %r{\A[^/]*\.(xcodeproj|xcworkspace)\z},
|
||||
|
||||
# Configuration files
|
||||
gitignore: '.gitignore',
|
||||
|
|
|
@ -1733,7 +1733,8 @@ describe Repository do
|
|||
:gitlab_ci,
|
||||
:avatar,
|
||||
:issue_template,
|
||||
:merge_request_template
|
||||
:merge_request_template,
|
||||
:xcode_config
|
||||
])
|
||||
|
||||
repository.after_change_head
|
||||
|
@ -2058,6 +2059,36 @@ describe Repository do
|
|||
end
|
||||
end
|
||||
|
||||
describe '#xcode_project?' do
|
||||
before do
|
||||
allow(repository).to receive(:tree).with(:head).and_return(double(:tree, blobs: [blob]))
|
||||
end
|
||||
|
||||
context 'when the root contains a *.xcodeproj file' do
|
||||
let(:blob) { double(:blob, path: 'Foo.xcodeproj') }
|
||||
|
||||
it 'returns true' do
|
||||
expect(repository.xcode_project?).to be_truthy
|
||||
end
|
||||
end
|
||||
|
||||
context 'when the root contains a *.xcworkspace file' do
|
||||
let(:blob) { double(:blob, path: 'Foo.xcworkspace') }
|
||||
|
||||
it 'returns true' do
|
||||
expect(repository.xcode_project?).to be_truthy
|
||||
end
|
||||
end
|
||||
|
||||
context 'when the root contains no XCode config file' do
|
||||
let(:blob) { double(:blob, path: 'subdir/Foo.xcworkspace') }
|
||||
|
||||
it 'returns false' do
|
||||
expect(repository.xcode_project?).to be_falsey
|
||||
end
|
||||
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
|
||||
|
|
Loading…
Reference in New Issue