Commit 0feb5f1d authored by Joshua Kalpin's avatar Joshua Kalpin

Merge branch 'master'

Conflicts:
	CHANGELOG.md
parents cd6354a5 f09bb136
...@@ -6,6 +6,12 @@ To install or update CocoaPods see this [guide](http://docs.cocoapods.org/guides ...@@ -6,6 +6,12 @@ To install or update CocoaPods see this [guide](http://docs.cocoapods.org/guides
###### Bug Fixes ###### Bug Fixes
* Fixed the developer frameworks search paths so that
`$(SDKROOT)/Developer/Library/Frameworks` is used for iOS and
`$(DEVELOPER_LIBRARY_DIR)/Frameworks` is used for OS X
[Kevin Wales](https://github.com/kwales)
[#1562](https://github.com/CocoaPods/pull/1562)
* When updating the pod repos, repositories with unreachable remotes * When updating the pod repos, repositories with unreachable remotes
are now ignored. This fixes an issue with certain private repositories. are now ignored. This fixes an issue with certain private repositories.
[Joshua Kalpin](https://github.com/Kapin) [Joshua Kalpin](https://github.com/Kapin)
......
...@@ -103,9 +103,10 @@ module Pod ...@@ -103,9 +103,10 @@ module Pod
search_paths = xcconfig.attributes['FRAMEWORK_SEARCH_PATHS'] ||= '' search_paths = xcconfig.attributes['FRAMEWORK_SEARCH_PATHS'] ||= ''
search_paths_to_add = [] search_paths_to_add = []
search_paths_to_add << '$(inherited)' search_paths_to_add << '$(inherited)'
search_paths_to_add << '"$(DEVELOPER_LIBRARY_DIR)/Frameworks"'
if platform == :ios if platform == :ios
search_paths_to_add << '"$(SDKROOT)/Developer/Library/Frameworks"' search_paths_to_add << '"$(SDKROOT)/Developer/Library/Frameworks"'
else
search_paths_to_add << '"$(DEVELOPER_LIBRARY_DIR)/Frameworks"'
end end
search_paths_to_add.each do |search_path| search_paths_to_add.each do |search_path|
unless search_paths.include?(search_path) unless search_paths.include?(search_path)
......
...@@ -15,6 +15,7 @@ module Pod ...@@ -15,6 +15,7 @@ module Pod
lambda { run_command('spec', 'which') }.should.raise CLAide::Help lambda { run_command('spec', 'which') }.should.raise CLAide::Help
lambda { run_command('spec', 'cat') }.should.raise CLAide::Help lambda { run_command('spec', 'cat') }.should.raise CLAide::Help
lambda { run_command('spec', 'edit') }.should.raise CLAide::Help lambda { run_command('spec', 'edit') }.should.raise CLAide::Help
lambda { run_command('spec', 'browse') }.should.raise CLAide::Help
end end
end end
...@@ -174,32 +175,43 @@ module Pod ...@@ -174,32 +175,43 @@ module Pod
#-------------------------------------------------------------------------# #-------------------------------------------------------------------------#
describe Command::Spec::Which do def it_should_check_for_existence(command)
it "errors if a given podspec doesn't exist" do it "errors if a given podspec doesn't exist" do
e = lambda { command('spec', 'which', 'some_pod_that_doesnt_exist').run }.should.raise Informative e = lambda { command('spec', command, 'some_pod_that_doesnt_exist').run }.should.raise Informative
e.message.should.match /Unable to find a pod with/ e.message.should.match /Unable to find a pod with/
end end
end
def it_should_check_for_ambiguity(command)
it "complains provided spec name is ambigious" do
e = lambda { command('spec', command, 'AF').run }.should.raise Informative
e.message.should.match /More than one/
end
end
describe Command::Spec::Which do
it_should_check_for_existence("which")
it_should_check_for_ambiguity("which")
it "prints the path of a given podspec" do it "prints the path of a given podspec" do
lambda { command('spec', 'which', 'AFNetworking').run }.should.not.raise lambda { command('spec', 'which', 'AFNetworking').run }.should.not.raise
text = "AFNetworking.podspec" text = "AFNetworking.podspec"
UI.output.should.include text.gsub(/\n/, '') UI.output.should.include text.gsub(/\n/, '')
end end
it "complains provided spec name is ambigious" do
e = lambda { command('spec', 'cat', 'AF').run }.should.raise Informative
e.message.should.match /More than one/
end
end end
#-------------------------------------------------------------------------# #-------------------------------------------------------------------------#
describe Command::Spec::Cat do describe Command::Spec::Cat do
it_should_check_for_existence("cat")
it_should_check_for_ambiguity("cat")
end end
#-------------------------------------------------------------------------# #-------------------------------------------------------------------------#
describe Command::Spec::Edit do describe Command::Spec::Edit do
it_should_check_for_existence("edit")
it_should_check_for_ambiguity("edit")
end end
#-------------------------------------------------------------------------# #-------------------------------------------------------------------------#
......
...@@ -94,7 +94,7 @@ module Pod ...@@ -94,7 +94,7 @@ module Pod
xcconfig.to_hash['OTHER_LDFLAGS'].should == '-weak_framework iAd' xcconfig.to_hash['OTHER_LDFLAGS'].should == '-weak_framework iAd'
end end
it "adds the developer frameworks search paths if needed" do it "adds the ios developer frameworks search paths if needed" do
xcconfig = Xcodeproj::Config.new xcconfig = Xcodeproj::Config.new
consumer = stub({ consumer = stub({
:xcconfig => {}, :xcconfig => {},
...@@ -104,7 +104,22 @@ module Pod ...@@ -104,7 +104,22 @@ module Pod
:platform_name => :ios :platform_name => :ios
}) })
@sut.add_spec_build_settings_to_xcconfig(consumer, xcconfig) @sut.add_spec_build_settings_to_xcconfig(consumer, xcconfig)
xcconfig.to_hash['FRAMEWORK_SEARCH_PATHS'].should.include('SDKROOT')
xcconfig.to_hash['FRAMEWORK_SEARCH_PATHS'].should.not.include('DEVELOPER_LIBRARY_DIR')
end
it "adds the osx developer frameworks search paths if needed" do
xcconfig = Xcodeproj::Config.new
consumer = stub({
:xcconfig => {},
:libraries => [],
:frameworks => ['SenTestingKit'],
:weak_frameworks => [],
:platform_name => :osx
})
@sut.add_spec_build_settings_to_xcconfig(consumer, xcconfig)
xcconfig.to_hash['FRAMEWORK_SEARCH_PATHS'].should.include('DEVELOPER_LIBRARY_DIR') xcconfig.to_hash['FRAMEWORK_SEARCH_PATHS'].should.include('DEVELOPER_LIBRARY_DIR')
xcconfig.to_hash['FRAMEWORK_SEARCH_PATHS'].should.not.include('SDKROOT')
end end
end end
...@@ -159,7 +174,7 @@ module Pod ...@@ -159,7 +174,7 @@ module Pod
frameworks_search_paths = xcconfig.to_hash['FRAMEWORK_SEARCH_PATHS'] frameworks_search_paths = xcconfig.to_hash['FRAMEWORK_SEARCH_PATHS']
frameworks_search_paths.should.include?('$(inherited)') frameworks_search_paths.should.include?('$(inherited)')
frameworks_search_paths.should.include?('"$(SDKROOT)/Developer/Library/Frameworks"') frameworks_search_paths.should.include?('"$(SDKROOT)/Developer/Library/Frameworks"')
frameworks_search_paths.should.include?('"$(DEVELOPER_LIBRARY_DIR)/Frameworks"') frameworks_search_paths.should.not.include?('"$(DEVELOPER_LIBRARY_DIR)/Frameworks"')
end end
it "adds the developer frameworks search paths to the xcconfig if XCTest has been detected" do it "adds the developer frameworks search paths to the xcconfig if XCTest has been detected" do
...@@ -168,7 +183,7 @@ module Pod ...@@ -168,7 +183,7 @@ module Pod
frameworks_search_paths = xcconfig.to_hash['FRAMEWORK_SEARCH_PATHS'] frameworks_search_paths = xcconfig.to_hash['FRAMEWORK_SEARCH_PATHS']
frameworks_search_paths.should.include?('$(inherited)') frameworks_search_paths.should.include?('$(inherited)')
frameworks_search_paths.should.include?('"$(SDKROOT)/Developer/Library/Frameworks"') frameworks_search_paths.should.include?('"$(SDKROOT)/Developer/Library/Frameworks"')
frameworks_search_paths.should.include?('"$(DEVELOPER_LIBRARY_DIR)/Frameworks"') frameworks_search_paths.should.not.include?('"$(DEVELOPER_LIBRARY_DIR)/Frameworks"')
end end
it "doesn't adds the developer frameworks relative to the SDK for OS X" do it "doesn't adds the developer frameworks relative to the SDK for OS X" do
......
...@@ -32,96 +32,112 @@ module Pod ...@@ -32,96 +32,112 @@ module Pod
#-------------------------------------------------------------------------# #-------------------------------------------------------------------------#
it "validates a correct podspec" do describe "Quick mode" do
validator = Validator.new(podspec_path) it "validates a correct podspec" do
validator.quick = true sut = Validator.new(podspec_path)
validator.validate sut.quick = true
validator.results.should == [] sut.validate
validator.validated?.should.be.true sut.results.should == []
sut.validated?.should.be.true
end
it "lints the podspec during validation" do
podspec = stub_podspec(/s.name.*$/, 's.name = "TEST"')
file = write_podspec(podspec)
sut = Validator.new(file)
sut.quick = true
sut.validate
sut.results.map(&:to_s).first.should.match /should match the name/
sut.validated?.should.be.false
end
it "respects quick mode" do
file = write_podspec(stub_podspec)
sut = Validator.new(file)
sut.quick = true
sut.expects(:perform_extensive_analysis).never
sut.validate
end
it "respects the only errors option" do
podspec = stub_podspec(/s.summary.*/, "s.summary = 'A short description of'")
file = write_podspec(podspec)
sut = Validator.new(file)
sut.quick = true
sut.only_errors = true
sut.validate
sut.results.map(&:to_s).first.should.match /summary.*meaningful/
sut.validated?.should.be.true
end
end end
it "lints the podspec during validation" do #-------------------------------------------------------------------------#
podspec = stub_podspec(/s.name.*$/, 's.name = "TEST"')
file = write_podspec(podspec)
validator = Validator.new(file)
validator.quick = true
validator.validate
validator.results.map(&:to_s).first.should.match /should match the name/
validator.validated?.should.be.false
end
it "uses xcodebuild to generate notes and warnings" do
validator = Validator.new(podspec_path)
validator.stubs(:check_file_patterns)
validator.stubs(:xcodebuild).returns("file.m:1:1: warning: direct access to objective-c's isa is deprecated")
validator.validate
first = validator.results.map(&:to_s).first
first.should.include "[xcodebuild]"
validator.result_type.should == :note
end
it "checks for file patterns" do
file = write_podspec(stub_podspec(/s\.source_files = 'JSONKit\.\*'/, "s.source_files = 'wrong_paht.*'"))
validator = Validator.new(file)
validator.stubs(:build_pod)
validator.validate
validator.results.map(&:to_s).first.should.match /source_files.*did not match/
validator.result_type.should == :error
end
it "validates a podspec with dependencies" do
podspec = stub_podspec(/s.name.*$/, 's.name = "ZKit"')
podspec.gsub!(/s.requires_arc/, "s.dependency 'SBJson', '~> 3.2'\n s.requires_arc")
podspec.gsub!(/s.license.*$/, 's.license = "Public Domain"')
file = write_podspec(podspec, "ZKit.podspec")
spec = Specification.from_file(file)
validator = Validator.new(spec)
validator.validate
validator.validated?.should.be.true
end
#--------------------------------------#
it "respects quick mode" do
file = write_podspec(stub_podspec)
validator = Validator.new(file)
validator.quick = true
validator.expects(:perform_extensive_analysis).never
validator.validate
end
it "respects the no clean option" do
file = write_podspec(stub_podspec)
validator = Validator.new(file)
validator.no_clean = true
validator.validate
validator.validation_dir.should.exist
end
it "respects the local option" do describe "Extensive analysis" do
validator = Validator.new(podspec_path) it "respects the no clean option" do
podfile = validator.send(:podfile_from_spec, :ios, '5.0') file = write_podspec(stub_podspec)
deployment_target = podfile.target_definitions['Pods'].platform.deployment_target sut = Validator.new(file)
deployment_target.to_s.should == "5.0" sut.no_clean = true
sut.validate
sut.validation_dir.should.exist
end
it "builds the pod per platform" do
file = write_podspec(stub_podspec)
sut = Validator.new(file)
sut.expects(:install_pod).twice
sut.expects(:build_pod).twice
sut.expects(:check_file_patterns).twice
sut.validate
end
it "uses the deployment target of the specification" do
sut = Validator.new(podspec_path)
podfile = sut.send(:podfile_from_spec, :ios, '5.0')
dependency = podfile.target_definitions['Pods'].dependencies.first
dependency.external_source.has_key?(:podspec).should.be.true
end
it "respects the local option" do
sut = Validator.new(podspec_path)
podfile = sut.send(:podfile_from_spec, :ios, '5.0')
deployment_target = podfile.target_definitions['Pods'].platform.deployment_target
deployment_target.to_s.should == "5.0"
end
it "uses xcodebuild to generate notes and warnings" do
sut = Validator.new(podspec_path)
sut.stubs(:check_file_patterns)
sut.stubs(:xcodebuild).returns("file.m:1:1: warning: direct access to objective-c's isa is deprecated")
sut.validate
first = sut.results.map(&:to_s).first
first.should.include "[xcodebuild]"
sut.result_type.should == :note
end
it "checks for file patterns" do
file = write_podspec(stub_podspec(/s\.source_files = 'JSONKit\.\*'/, "s.source_files = 'wrong_paht.*'"))
sut = Validator.new(file)
sut.stubs(:build_pod)
sut.validate
sut.results.map(&:to_s).first.should.match /source_files.*did not match/
sut.result_type.should == :error
end
it "validates a podspec with dependencies" do
podspec = stub_podspec(/s.name.*$/, 's.name = "ZKit"')
podspec.gsub!(/s.requires_arc/, "s.dependency 'SBJson', '~> 3.2'\n s.requires_arc")
podspec.gsub!(/s.license.*$/, 's.license = "Public Domain"')
file = write_podspec(podspec, "ZKit.podspec")
spec = Specification.from_file(file)
sut = Validator.new(spec)
sut.validate
sut.validated?.should.be.true
end
end end
it "respects the only errors option" do #-------------------------------------------------------------------------#
podspec = stub_podspec(/s.summary.*/, "s.summary = 'A short description of'")
file = write_podspec(podspec)
validator = Validator.new(file)
validator.quick = true
validator.only_errors = true
validator.validate
validator.results.map(&:to_s).first.should.match /summary.*meaningful/
validator.validated?.should.be.true
end
it "uses the deployment target of the specification" do
validator = Validator.new(podspec_path)
podfile = validator.send(:podfile_from_spec, :ios, '5.0')
dependency = podfile.target_definitions['Pods'].dependencies.first
dependency.external_source.has_key?(:podspec).should.be.true
end
end end
end end
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