Commit 23c0d65a authored by Samuel E. Giddins's avatar Samuel E. Giddins

[Resolver] Scope dependencies in #edge_is_valid_for_target? by the spec's…

[Resolver] Scope dependencies in #edge_is_valid_for_target? by the spec's consume for that target's platform

This replaces the hack of `Dependency#from_subspec_dependency?`
parent 3b511efb
......@@ -15,7 +15,7 @@ gem 'json', '1.7.7'
group :development do
cp_gem 'claide', 'CLAide'
cp_gem 'cocoapods-core', 'Core'
cp_gem 'cocoapods-core', 'Core', 'scope-dependencies-by-consumer'
cp_gem 'cocoapods-downloader', 'cocoapods-downloader'
cp_gem 'cocoapods-plugins', 'cocoapods-plugins'
cp_gem 'cocoapods-trunk', 'cocoapods-trunk'
......
......@@ -7,8 +7,8 @@ GIT
GIT
remote: https://github.com/CocoaPods/Core.git
revision: d436f8cc0aaa2e149aa770e20b74b7c0494b7952
branch: master
revision: a2dfd2aa706ba745380d46fa34cfede404f68a51
branch: scope-dependencies-by-consumer
specs:
cocoapods-core (0.35.0.rc1)
activesupport (>= 3.2.15)
......
......@@ -374,9 +374,10 @@ module Pod
# @return [Bool]
#
def edge_is_valid_for_target?(edge, target)
dependencies_for_target_platform =
edge.origin.payload.all_dependencies(target.platform).map(&:name)
edge.requirements.any? do |dependency|
!dependency.from_subspec_dependency? ||
edge.destination.payload.available_platforms.any? { |p| target.platform.supports?(p) }
dependencies_for_target_platform.include?(dependency.name)
end
end
end
......
......@@ -382,7 +382,7 @@ module Pod
UI.warnings.should.match /multiple specifications/
end
describe 'concerning dependencies from `Specification#subspec_dependencies`' do
describe 'concerning dependencies that are scoped by consumer platform' do
def resolve
Resolver.new(config.sandbox, @podfile, empty_graph, SourcesManager.all).resolve
end
......@@ -424,6 +424,28 @@ module Pod
resolved[ios_target].map(&:to_s).should.include ios_subspec
resolved[osx_target].map(&:to_s).should.not.include ios_subspec
end
it 'includes dependencies in the target for the requested platform only' do
osx_dependency = 'ARAnalytics/CoreMac (2.8.0)'
ios_dependency = 'ARAnalytics/CoreIOS (2.8.0)'
@podfile = Podfile.new do
target 'iOS' do
platform :ios, '8'
pod 'ARAnalytics', '2.8.0'
end
target 'OSX' do
platform :osx, '10.10'
pod 'ARAnalytics', '2.8.0'
end
end
resolved = resolve
ios_target = resolved.keys.find { |td| td.label == 'Pods-iOS' }
osx_target = resolved.keys.find { |td| td.label == 'Pods-OSX' }
resolved[ios_target].map(&:to_s).should.include ios_dependency
resolved[osx_target].map(&:to_s).should.not.include ios_dependency
resolved[ios_target].map(&:to_s).should.not.include osx_dependency
resolved[osx_target].map(&:to_s).should.include osx_dependency
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