blob: 49523f21ff7c3cc2109c6086966a9f6581ce397e [file] [log] [blame]
require File.expand_path('../../../spec_helper', __FILE__)
module Pod
describe Installer::InstallationOptions do
describe 'registered options' do
{
'clean' => true,
'deduplicate_targets' => true,
'deterministic_uuids' => true,
'integrate_targets' => true,
'lock_pod_sources' => true,
'share_schemes_for_development_pods' => false,
}.each do |option, default|
it "includes `#{option}` defaulting to `#{default}`" do
Installer::InstallationOptions.defaults.fetch(option).should == default
Installer::InstallationOptions.new.send(option).should == default
end
end
end
describe '.from_podfile' do
it 'raises for a non-cocoapods install' do
podfile = Podfile.new { install! 'foo', :key => 'value' }
exception = should.raise(Informative) { Installer::InstallationOptions.from_podfile(podfile) }
exception.message.should.include 'Currently need to specify a `cocoapods` install, you chose `foo`.'
end
it 'parses the name in a case-insensitive manner' do
podfile = Podfile.new { install! 'CoCoApOdS' }
should.not.raise(Informative) { Installer::InstallationOptions.from_podfile(podfile) }
end
it 'uses the installation method options to create the options' do
options = { :integrate_targets => false }
podfile = Podfile.new { install! 'cocoapods', options }
installation_options = Installer::InstallationOptions.from_podfile(podfile)
installation_options.should == Installer::InstallationOptions.new(options)
end
end
describe '#initialize' do
it 'uses all defaults when no options are specified' do
Installer::InstallationOptions.new.to_h(:include_defaults => false).should.be.empty
end
it 'sets the values as specified in the options' do
installation_options = Installer::InstallationOptions.new(:deterministic_uuids => false)
installation_options.deterministic_uuids.should.be.false
end
it 'raises when unknown keys are encountered' do
exception = should.raise(Informative) { Installer::InstallationOptions.new(:a => 'a', :b => 'b', :c => 'c') }
exception.message.should.include 'Unknown installation options: a, b, and c.'
end
end
describe '#to_h' do
it 'includes all options by default' do
installation_options = Installer::InstallationOptions.new(:deterministic_uuids => false)
installation_options.to_h.should == {
'clean' => true,
'deduplicate_targets' => true,
'deterministic_uuids' => false,
'integrate_targets' => true,
'lock_pod_sources' => true,
'warn_for_multiple_pod_sources' => true,
'share_schemes_for_development_pods' => false,
}
end
it 'removes default values when specified' do
installation_options = Installer::InstallationOptions.new(:deterministic_uuids => false)
installation_options.to_h(:include_defaults => false).should == {
'deterministic_uuids' => false,
}
end
end
end
end