Unverified Commit 787c1fc1 authored by Dimitris Koutsogiorgas's avatar Dimitris Koutsogiorgas Committed by GitHub

Merge pull request #7501 from dnkoutso/validator_test_spec_swift_fix

Ensure `SWIFT_VERSION` is set for test only pod targets during validation
parents 66646834 2b05a2ae
...@@ -55,6 +55,10 @@ To install release candidates run `[sudo] gem install cocoapods --pre` ...@@ -55,6 +55,10 @@ To install release candidates run `[sudo] gem install cocoapods --pre`
##### Bug Fixes ##### Bug Fixes
* Ensure `SWIFT_VERSION` is set for test only pod targets during validation
[Dimitris Koutsogiorgas](https://github.com/dnkoutso)
[#7498](https://github.com/CocoaPods/CocoaPods/issues/7498)
* Fix iOS test native target signing settings * Fix iOS test native target signing settings
[Dimitris Koutsogiorgas](https://github.com/dnkoutso) [Dimitris Koutsogiorgas](https://github.com/dnkoutso)
[#7504](https://github.com/CocoaPods/CocoaPods/pull/7504) [#7504](https://github.com/CocoaPods/CocoaPods/pull/7504)
......
...@@ -506,13 +506,10 @@ module Pod ...@@ -506,13 +506,10 @@ module Pod
end end
def configure_pod_targets(targets, deployment_target) def configure_pod_targets(targets, deployment_target)
test_only_pod_targets = @installer.pod_targets - targets.flat_map(&:pod_targets)
targets.each do |target| targets.each do |target|
target.pod_targets.each do |pod_target| target.pod_targets.each do |pod_target|
next unless (native_target = pod_target.native_target) update_pod_target_build_settings(pod_target)
native_target.build_configuration_list.build_configurations.each do |build_configuration|
(build_configuration.build_settings['OTHER_CFLAGS'] ||= '$(inherited)') << ' -Wincomplete-umbrella'
build_configuration.build_settings['SWIFT_VERSION'] = (pod_target.swift_version || swift_version) if pod_target.uses_swift?
end
if pod_target.uses_swift? if pod_target.uses_swift?
pod_target.test_native_targets.each do |test_native_target| pod_target.test_native_targets.each do |test_native_target|
test_native_target.build_configuration_list.build_configurations.each do |build_configuration| test_native_target.build_configuration_list.build_configurations.each do |build_configuration|
...@@ -527,6 +524,20 @@ module Pod ...@@ -527,6 +524,20 @@ module Pod
error('swift', 'Swift support uses dynamic frameworks and is therefore only supported on iOS > 8.') unless uses_xctest error('swift', 'Swift support uses dynamic frameworks and is therefore only supported on iOS > 8.') unless uses_xctest
end end
end end
# Wire up Swift version to pod targets used only by tests.
test_only_pod_targets.each do |test_pod_target|
update_pod_target_build_settings(test_pod_target)
end
end
def update_pod_target_build_settings(pod_target)
native_target = pod_target.native_target
unless native_target.nil?
native_target.build_configuration_list.build_configurations.each do |build_configuration|
(build_configuration.build_settings['OTHER_CFLAGS'] ||= '$(inherited)') << ' -Wincomplete-umbrella'
build_configuration.build_settings['SWIFT_VERSION'] = (pod_target.swift_version || swift_version) if pod_target.uses_swift?
end
end
end end
def validate_vendored_dynamic_frameworks def validate_vendored_dynamic_frameworks
......
...@@ -1068,6 +1068,26 @@ module Pod ...@@ -1068,6 +1068,26 @@ module Pod
pod_target_one = stub(:uses_swift? => true, :swift_version => '4.0', :native_target => native_target_one, :test_native_targets => []) pod_target_one = stub(:uses_swift? => true, :swift_version => '4.0', :native_target => native_target_one, :test_native_targets => [])
pod_target_two = stub(:uses_swift? => true, :swift_version => '3.2', :native_target => native_target_two, :test_native_targets => []) pod_target_two = stub(:uses_swift? => true, :swift_version => '3.2', :native_target => native_target_two, :test_native_targets => [])
aggregate_target = stub(:pod_targets => [pod_target_one, pod_target_two]) aggregate_target = stub(:pod_targets => [pod_target_one, pod_target_two])
installer = stub(:pod_targets => [pod_target_one, pod_target_two])
validator.instance_variable_set(:@installer, installer)
validator.send(:configure_pod_targets, [aggregate_target], '9.0')
debug_configuration_one.build_settings['SWIFT_VERSION'].should == '4.0'
debug_configuration_two.build_settings['SWIFT_VERSION'].should == '3.2'
end
it 'honors swift version set by the pod target for dependencies that are not part of the aggregate target' do
validator = test_swiftpod
consumer = stub(:platform_name => 'iOS')
validator.instance_variable_set(:@consumer, consumer)
debug_configuration_one = stub(:build_settings => {})
debug_configuration_two = stub(:build_settings => {})
native_target_one = stub(:build_configuration_list => stub(:build_configurations => [debug_configuration_one]))
native_target_two = stub(:build_configuration_list => stub(:build_configurations => [debug_configuration_two]))
pod_target_one = stub(:uses_swift? => true, :swift_version => '4.0', :native_target => native_target_one, :test_native_targets => [])
pod_target_two = stub(:uses_swift? => true, :swift_version => '3.2', :native_target => native_target_two, :test_native_targets => [])
aggregate_target = stub(:pod_targets => [pod_target_one])
installer = stub(:pod_targets => [pod_target_one, pod_target_two])
validator.instance_variable_set(:@installer, installer)
validator.send(:configure_pod_targets, [aggregate_target], '9.0') validator.send(:configure_pod_targets, [aggregate_target], '9.0')
debug_configuration_one.build_settings['SWIFT_VERSION'].should == '4.0' debug_configuration_one.build_settings['SWIFT_VERSION'].should == '4.0'
debug_configuration_two.build_settings['SWIFT_VERSION'].should == '3.2' debug_configuration_two.build_settings['SWIFT_VERSION'].should == '3.2'
......
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