Commit 5e374a66 authored by Samuel E. Giddins's avatar Samuel E. Giddins

[Resolver] Add spec for platform compatibility of transitive deps

parent 6fc159de
......@@ -38,6 +38,7 @@ module Pod
@locked_dependencies = locked_dependencies
@sources = Array(sources)
@platforms_by_dependency = Hash.new { |h, k| h[k] = [] }
@cached_sets = {}
end
#-------------------------------------------------------------------------#
......@@ -58,7 +59,6 @@ module Pod
@platforms_by_dependency[dep].push(target.platform).uniq!
end
end
@cached_sets = {}
@activated = Molinillo::Resolver.new(self, self).resolve(dependencies, locked_dependencies)
specs_by_target.tap do |specs_by_target|
specs_by_target.values.flatten.each do |spec|
......
......@@ -191,6 +191,30 @@ module Pod
]
end
it 'selects only platform-compatible versions for transitive dependencies' do
spec = Pod::Spec.new do |s|
s.name = 'lib'
s.version = '1.0'
s.platform = :ios, '5.0'
s.subspec('Calendar') {}
s.subspec('Classes') { |ss| ss.dependency 'lib/Calendar' }
s.subspec('RequestManager') do |ss|
ss.dependency 'lib/Classes'
ss.dependency 'AFNetworking'
end
s.default_subspec = 'RequestManager'
end
@podfile = Podfile.new do
platform :ios, '5.0'
pod 'lib'
end
@resolver.stubs(:podfile).returns(@podfile)
@resolver.send(:cached_sets)['lib'] = stub(:all_specifications => [spec])
@resolver.resolve.values.flatten.map(&:to_s).sort.should == [
'AFNetworking (1.3.4)', 'lib (1.0)', 'lib/Calendar (1.0)', 'lib/Classes (1.0)', 'lib/RequestManager (1.0)'
]
end
it 'raises an informative error when version conflicts are caused by platform incompatibilities' do
@podfile = Podfile.new do
platform :osx, '10.7'
......
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