blob: 1aba122dc92b6afc1ae4bb0f7752fc9ef095342c [file] [log] [blame]
require File.expand_path('../../../spec_helper', __FILE__)
require 'webmock'
module Pod
describe ExternalSources::PodspecSource do
before do
podspec_path = fixture('integration/Reachability/Reachability.podspec')
dependency = Dependency.new('Reachability', :podspec => podspec_path.to_s)
podfile_path = fixture('integration/Podfile')
@subject = ExternalSources.from_dependency(dependency, podfile_path)
end
it 'creates a copy of the podspec' do
@subject.fetch(config.sandbox)
path = config.sandbox.specifications_root + 'Reachability.podspec.json'
path.should.exist?
end
it 'returns the description' do
@subject.description.should.match /from `.*Reachability\/Reachability.podspec`/
end
describe 'Helpers' do
it 'handles absolute paths' do
@subject.stubs(:params).returns(:podspec => fixture('integration/Reachability'))
path = @subject.send(:podspec_uri)
path.should == fixture('integration/Reachability/Reachability.podspec').to_s
end
it 'handles paths when there is no podfile path' do
@subject.stubs(:podfile_path).returns(nil)
@subject.stubs(:params).returns(:podspec => fixture('integration/Reachability'))
path = @subject.send(:podspec_uri)
path.should == fixture('integration/Reachability/Reachability.podspec').to_s
end
it 'handles relative paths' do
@subject.stubs(:params).returns(:podspec => 'Reachability')
path = @subject.send(:podspec_uri)
path.should == fixture('integration/Reachability/Reachability.podspec').to_s
end
it 'expands the tilde' do
File.stubs(:exist?).returns(true)
@subject.stubs(:params).returns(:podspec => '~/Reachability')
path = @subject.send(:podspec_uri)
path.should == ENV['HOME'] + '/Reachability/Reachability.podspec'
end
it 'handles URLs' do
@subject.stubs(:params).returns(:podspec => 'http://www.example.com/Reachability.podspec')
path = @subject.send(:podspec_uri)
path.should == 'http://www.example.com/Reachability.podspec'
end
end
describe 'http source' do
it 'raises an Informative error if the specified url fails to load' do
@subject.stubs(:params).returns(:podspec => 'https://github.com/username/TSMessages/TSMessages.podspec')
WebMock.enable!
WebMock::API.stub_request(:get, 'https://github.com/username/TSMessages/TSMessages.podspec').
to_return(:status => 404)
lambda { @subject.fetch(config.sandbox) }.should.raise(Informative).
message.should.match(/Failed to fetch podspec for/)
WebMock.reset!
end
end
end
end