Commit 4a783738 authored by arida's avatar arida

Merge commit 'f6db4322'

parents eb2ab8e9 f6db4322
...@@ -28,6 +28,14 @@ To install release candidates run `[sudo] gem install cocoapods --pre` ...@@ -28,6 +28,14 @@ To install release candidates run `[sudo] gem install cocoapods --pre`
[yanzhiwei147](https://github.com/yanzhiwei147) [yanzhiwei147](https://github.com/yanzhiwei147)
[#5510](https://github.com/CocoaPods/CocoaPods/pull/5510) [#5510](https://github.com/CocoaPods/CocoaPods/pull/5510)
* Set 'Allow app extension API only' for Messages extensions.
[Boris Bügling](https://github.com/neonichu)
[#5558](https://github.com/CocoaPods/CocoaPods/issues/5558)
* Accept `pod repo push` with URL instead of only repo name
[Mark Schall](https://github.com/maschall)
[#5572](https://github.com/CocoaPods/CocoaPods/pull/5572)
##### Bug Fixes ##### Bug Fixes
* Fix local pod platform conflict error message. * Fix local pod platform conflict error message.
......
...@@ -39,7 +39,7 @@ module Pod ...@@ -39,7 +39,7 @@ module Pod
@allow_warnings = argv.flag?('allow-warnings') @allow_warnings = argv.flag?('allow-warnings')
@local_only = argv.flag?('local-only') @local_only = argv.flag?('local-only')
@repo = argv.shift_argument @repo = argv.shift_argument
@source = config.sources_manager.sources([@repo]).first unless @repo.nil? @source = source_for_repo
@source_urls = argv.option('sources', config.sources_manager.all.map(&:url).join(',')).split(',') @source_urls = argv.option('sources', config.sources_manager.all.map(&:url).join(',')).split(',')
@podspec = argv.shift_argument @podspec = argv.shift_argument
@use_frameworks = !argv.flag?('use-libraries') @use_frameworks = !argv.flag?('use-libraries')
...@@ -52,8 +52,8 @@ module Pod ...@@ -52,8 +52,8 @@ module Pod
def validate! def validate!
super super
help! 'A spec-repo name is required.' unless @repo help! 'A spec-repo name or url is required.' unless @repo
unless @source.repo.directory? unless @source && @source.repo.directory?
raise Informative, raise Informative,
"Unable to find the `#{@repo}` repo. " \ "Unable to find the `#{@repo}` repo. " \
'If it has not yet been cloned, add it via `pod repo add`.' 'If it has not yet been cloned, add it via `pod repo add`.'
...@@ -243,6 +243,18 @@ module Pod ...@@ -243,6 +243,18 @@ module Pod
podspec_files.count podspec_files.count
end end
# Returns source for @repo
#
# @note If URL is invalid or repo doesn't exist, validate! will throw the error
#
# @return [Source]
#
def source_for_repo
config.sources_manager.source_with_name_or_url(@repo) unless @repo.nil?
rescue
nil
end
#---------------------------------------------------------------------# #---------------------------------------------------------------------#
end end
end end
......
...@@ -185,7 +185,7 @@ module Pod ...@@ -185,7 +185,7 @@ module Pod
frameworks_group = project.frameworks_group frameworks_group = project.frameworks_group
aggregate_targets.each do |aggregate_target| aggregate_targets.each do |aggregate_target|
is_app_extension = !(aggregate_target.user_targets.map(&:symbol_type) & is_app_extension = !(aggregate_target.user_targets.map(&:symbol_type) &
[:app_extension, :watch_extension, :watch2_extension, :tv_extension]).empty? [:app_extension, :watch_extension, :watch2_extension, :tv_extension, :messages_extension]).empty?
is_app_extension ||= aggregate_target.user_targets.any? { |ut| ut.common_resolved_build_setting('APPLICATION_EXTENSION_API_ONLY') == 'YES' } is_app_extension ||= aggregate_target.user_targets.any? { |ut| ut.common_resolved_build_setting('APPLICATION_EXTENSION_API_ONLY') == 'YES' }
aggregate_target.pod_targets.each do |pod_target| aggregate_target.pod_targets.each do |pod_target|
......
...@@ -17,6 +17,15 @@ module Pod ...@@ -17,6 +17,15 @@ module Pod
end end
end end
it "complains if it can't get repo url" do
Dir.chdir(fixture('banana-lib')) do
Command::Repo::Add.any_instance.stubs(:clone_repo)
cmd = command('repo', 'push', 'https://github.com/foo/bar.git')
e = lambda { cmd.validate! }.should.raise Informative
e.message.should.include('Unable to find the `https://github.com/foo/bar.git` repo')
end
end
it "complains if it can't find a spec" do it "complains if it can't find a spec" do
repo_make('test_repo') repo_make('test_repo')
e = lambda { run_command('repo', 'push', 'test_repo') }.should.raise Pod::Informative e = lambda { run_command('repo', 'push', 'test_repo') }.should.raise Pod::Informative
...@@ -79,7 +88,7 @@ module Pod ...@@ -79,7 +88,7 @@ module Pod
File.open(temporary_directory + 'BananaLib.podspec', 'w') { |f| f.write(spec_clean) } File.open(temporary_directory + 'BananaLib.podspec', 'w') { |f| f.write(spec_clean) }
end end
it 'refuses to push if the repo is not clean' do it 'refuses to push if the repo is master' do
Dir.chdir(test_repo_path) do Dir.chdir(test_repo_path) do
`git remote set-url origin https://github.com/CocoaPods/Specs.git` `git remote set-url origin https://github.com/CocoaPods/Specs.git`
end end
...@@ -118,6 +127,15 @@ module Pod ...@@ -118,6 +127,15 @@ module Pod
(@upstream + 'PushTest/1.4/PushTest.podspec').read.should.include('PushTest') (@upstream + 'PushTest/1.4/PushTest.podspec').read.should.include('PushTest')
end end
it 'successfully pushes a spec to URL' do
cmd = command('repo', 'push', @upstream)
Dir.chdir(@upstream) { `git checkout -b tmp_for_push -q` }
cmd.expects(:validate_podspec_files).returns(true)
Dir.chdir(temporary_directory) { cmd.run }
Dir.chdir(@upstream) { `git checkout master -q` }
(@upstream + 'PushTest/1.4/PushTest.podspec').read.should.include('PushTest')
end
it 'successfully pushes converted JSON podspec' do it 'successfully pushes converted JSON podspec' do
cmd = command('repo', 'push', 'master', '--use-json') cmd = command('repo', 'push', 'master', '--use-json')
Dir.chdir(@upstream) { `git checkout -b tmp_for_push -q` } Dir.chdir(@upstream) { `git checkout -b tmp_for_push -q` }
......
...@@ -209,6 +209,10 @@ module Pod ...@@ -209,6 +209,10 @@ module Pod
test_extension_target(:tv_extension) test_extension_target(:tv_extension)
end end
it 'configures APPLICATION_EXTENSION_API_ONLY for Messages extension targets' do
test_extension_target(:messages_extension)
end
it 'configures APPLICATION_EXTENSION_API_ONLY for targets where the user target has it set' do it 'configures APPLICATION_EXTENSION_API_ONLY for targets where the user target has it set' do
mock_user_target = mock('UserTarget', :symbol_type => :application) mock_user_target = mock('UserTarget', :symbol_type => :application)
mock_user_target.expects(:common_resolved_build_setting).with('APPLICATION_EXTENSION_API_ONLY').returns('YES') mock_user_target.expects(:common_resolved_build_setting).with('APPLICATION_EXTENSION_API_ONLY').returns('YES')
......
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