Commit cf12c1cc authored by Danielle Tomlinson's avatar Danielle Tomlinson Committed by GitHub

Merge pull request #5841 from CocoaPods/dani_xcode_8_linting

Fix linting on Xcode 8
parents 3d45d35b 66f25a0b
...@@ -19,7 +19,9 @@ To install release candidates run `[sudo] gem install cocoapods --pre` ...@@ -19,7 +19,9 @@ To install release candidates run `[sudo] gem install cocoapods --pre`
##### Enhancements ##### Enhancements
* None. * Use the SWIFT_VERSION when linting pods.
[Danielle Tomlinson](https://github.com/dantoml)
[#5841](https://github.com/CocoaPods/CocoaPods/issues/5841)
##### Bug Fixes ##### Bug Fixes
......
...@@ -237,6 +237,19 @@ module Pod ...@@ -237,6 +237,19 @@ module Pod
Pathname(Dir.tmpdir) + 'CocoaPods/Lint' Pathname(Dir.tmpdir) + 'CocoaPods/Lint'
end end
# @return [String] the SWIFT_VERSION to use for validation.
#
def swift_version
@swift_version ||= dot_swift_version || '2.3'
end
# @return [String] the SWIFT_VERSION in the .swift-version file or nil.
#
def dot_swift_version
swift_version_path = file.dirname + '.swift-version'
swift_version_path.read if swift_version_path.exist?
end
#-------------------------------------------------------------------------# #-------------------------------------------------------------------------#
private private
...@@ -388,10 +401,17 @@ module Pod ...@@ -388,10 +401,17 @@ module Pod
source_file_ref = app_project.new_group('App', 'App').new_file(source_file) source_file_ref = app_project.new_group('App', 'App').new_file(source_file)
app_target = app_project.targets.first app_target = app_project.targets.first
app_target.add_file_references([source_file_ref]) app_target.add_file_references([source_file_ref])
add_swift_version(app_target)
add_xctest(app_target) if @installer.pod_targets.any? { |pt| pt.spec_consumers.any? { |c| c.frameworks.include?('XCTest') } } add_xctest(app_target) if @installer.pod_targets.any? { |pt| pt.spec_consumers.any? { |c| c.frameworks.include?('XCTest') } }
app_project.save app_project.save
end end
def add_swift_version(app_target)
app_target.build_configurations.each do |configuration|
configuration.build_settings['SWIFT_VERSION'] = swift_version
end
end
def add_xctest(app_target) def add_xctest(app_target)
app_target.build_configurations.each do |configuration| app_target.build_configurations.each do |configuration|
search_paths = configuration.build_settings['FRAMEWORK_SEARCH_PATHS'] ||= '$(inherited)' search_paths = configuration.build_settings['FRAMEWORK_SEARCH_PATHS'] ||= '$(inherited)'
...@@ -445,6 +465,7 @@ module Pod ...@@ -445,6 +465,7 @@ module Pod
next unless native_target = pod_target.native_target next unless native_target = pod_target.native_target
native_target.build_configuration_list.build_configurations.each do |build_configuration| native_target.build_configuration_list.build_configurations.each do |build_configuration|
(build_configuration.build_settings['OTHER_CFLAGS'] ||= '$(inherited)') << ' -Wincomplete-umbrella' (build_configuration.build_settings['OTHER_CFLAGS'] ||= '$(inherited)') << ' -Wincomplete-umbrella'
build_configuration.build_settings['SWIFT_VERSION'] = swift_version if pod_target.uses_swift?
end end
end end
if target.pod_targets.any?(&:uses_swift?) && consumer.platform_name == :ios && if target.pod_targets.any?(&:uses_swift?) && consumer.platform_name == :ios &&
......
...@@ -784,12 +784,12 @@ module Pod ...@@ -784,12 +784,12 @@ module Pod
validator = Validator.new(file, config.sources_manager.master.map(&:url)) validator = Validator.new(file, config.sources_manager.master.map(&:url))
validator.stubs(:build_pod) validator.stubs(:build_pod)
validator.stubs(:validate_url) validator.stubs(:validate_url)
validator.validate
validator validator
end end
it 'fails on deployment target < iOS 8 for Swift Pods' do it 'fails on deployment target < iOS 8 for Swift Pods' do
validator = test_swiftpod validator = test_swiftpod
validator.validate
validator.results.map(&:to_s).first.should.match /dynamic frameworks.*iOS > 8/ validator.results.map(&:to_s).first.should.match /dynamic frameworks.*iOS > 8/
validator.result_type.should == :error validator.result_type.should == :error
...@@ -799,6 +799,7 @@ module Pod ...@@ -799,6 +799,7 @@ module Pod
Specification::Consumer.any_instance.stubs(:frameworks).returns(%w(XCTest)) Specification::Consumer.any_instance.stubs(:frameworks).returns(%w(XCTest))
validator = test_swiftpod validator = test_swiftpod
validator.validate
validator.results.count.should == 0 validator.results.count.should == 0
end end
...@@ -806,9 +807,45 @@ module Pod ...@@ -806,9 +807,45 @@ module Pod
Specification.any_instance.stubs(:deployment_target).returns('9.0') Specification.any_instance.stubs(:deployment_target).returns('9.0')
validator = test_swiftpod validator = test_swiftpod
validator.validate
validator.results.count.should == 0 validator.results.count.should == 0
end end
describe '#swift_version' do
it 'defaults to Swift 2.3' do
validator = test_swiftpod
validator.stubs(:dot_swift_version).returns(nil)
validator.swift_version.should == '2.3'
end
it 'checks for dot_swift_version' do
validator = test_swiftpod
validator.expects(:dot_swift_version)
validator.swift_version
end
it 'uses the result of dot_swift_version if not nil' do
validator = test_swiftpod
validator.stubs(:dot_swift_version).returns('1.0')
validator.swift_version.should == '1.0'
end
end
describe '#dot_swift_version' do
it 'looks for a .swift-version file' do
validator = test_swiftpod
Pathname.any_instance.expects(:exist?)
validator.dot_swift_version
end
it 'uses the .swift-version file if present' do
validator = test_swiftpod
Pathname.any_instance.stubs(:exist?).returns(true)
Pathname.any_instance.expects(:read).returns('1.0')
validator.dot_swift_version.should == '1.0'
end
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