Commit 918619a6 authored by Eloy Duran's avatar Eloy Duran

Add specs for Specification attributes that can take values for different platforms.

parent 08aa7961
...@@ -36,7 +36,7 @@ module Pod ...@@ -36,7 +36,7 @@ module Pod
@xcconfig = Xcodeproj::Config.new @xcconfig = Xcodeproj::Config.new
end end
# Attributes # Attributes **without** multiple platform support
attr_accessor :name attr_accessor :name
attr_accessor :homepage attr_accessor :homepage
...@@ -90,6 +90,35 @@ module Pod ...@@ -90,6 +90,35 @@ module Pod
@part_of = dependency(*name_and_version_requirements) @part_of = dependency(*name_and_version_requirements)
end end
def clean_paths=(patterns)
@clean_paths = pattern_list(patterns)
end
attr_reader :clean_paths
alias_method :clean_path=, :clean_paths=
def header_dir=(dir)
@header_dir = Pathname.new(dir)
end
def header_dir
@header_dir || pod_destroot_name
end
def platform=(platform)
@platform = Platform.new(platform)
end
attr_reader :platform
attr_accessor :requires_arc
def subspec(name, &block)
subspec = Subspec.new(self, name, &block)
@subspecs << subspec
subspec
end
attr_reader :subspecs
### Attributes **with** multiple platform support
def source_files=(patterns) def source_files=(patterns)
@source_files = pattern_list(patterns) @source_files = pattern_list(patterns)
end end
...@@ -101,12 +130,6 @@ module Pod ...@@ -101,12 +130,6 @@ module Pod
attr_reader :resources attr_reader :resources
alias_method :resource=, :resources= alias_method :resource=, :resources=
def clean_paths=(patterns)
@clean_paths = pattern_list(patterns)
end
attr_reader :clean_paths
alias_method :clean_path=, :clean_paths=
def xcconfig=(hash) def xcconfig=(hash)
@xcconfig.merge!(hash) @xcconfig.merge!(hash)
end end
...@@ -124,14 +147,6 @@ module Pod ...@@ -124,14 +147,6 @@ module Pod
end end
alias_method :library=, :libraries= alias_method :library=, :libraries=
def header_dir=(dir)
@header_dir = Pathname.new(dir)
end
def header_dir
@header_dir || pod_destroot_name
end
attr_writer :compiler_flags attr_writer :compiler_flags
def compiler_flags def compiler_flags
flags = "#{@compiler_flags}" flags = "#{@compiler_flags}"
...@@ -139,13 +154,6 @@ module Pod ...@@ -139,13 +154,6 @@ module Pod
flags flags
end end
def platform=(platform)
@platform = Platform.new(platform)
end
attr_reader :platform
attr_accessor :requires_arc
def dependency(*name_and_version_requirements) def dependency(*name_and_version_requirements)
name, *version_requirements = name_and_version_requirements.flatten name, *version_requirements = name_and_version_requirements.flatten
dep = Dependency.new(name, *version_requirements) dep = Dependency.new(name, *version_requirements)
...@@ -154,14 +162,7 @@ module Pod ...@@ -154,14 +162,7 @@ module Pod
end end
attr_reader :dependencies attr_reader :dependencies
def subspec(name, &block) ### Not attributes
subspec = Subspec.new(self, name, &block)
@subspecs << subspec
subspec
end
attr_reader :subspecs
# Not attributes
include Config::Mixin include Config::Mixin
......
...@@ -410,3 +410,102 @@ describe "A Pod::Specification with :local source" do ...@@ -410,3 +410,102 @@ describe "A Pod::Specification with :local source" do
end end
end end
describe "A Pod::Specification, concerning its attributes that support different values per platform," do
describe "when **no** platform specific values are given" do
before do
@spec = Pod::Spec.new do |s|
s.source_files = 'file1', 'file2'
s.resources = 'file1', 'file2'
s.xcconfig = { 'OTHER_LDFLAGS' => '-lObjC' }
s.framework = 'QuartzCore'
s.library = 'z'
s.compiler_flags = '-Wdeprecated-implementations'
s.requires_arc = true
s.dependency 'JSONKit'
s.dependency 'SSZipArchive'
end
end
it "returns the same list of source files for each platform" do
@spec.source_files.should == { :ios => %w{ file1 file2 }, :osx => %w{ file1 file2 } }
end
it "returns the same list of resources for each platform" do
@spec.resources.should == { :ios => %w{ file1 file2 }, :osx => %w{ file1 file2 } }
end
it "returns the same list of xcconfig build settings for each platform" do
build_settings = { 'OTHER_LDFLAGS' => '-lObjC -framework QuartzCore -lz' }
@spec.xcconfig.should == { :ios => build_settings, :osx => build_settings }
end
it "returns the same list of compiler flags for each platform" do
compiler_flags = '-Wdeprecated-implementations -fobjc-arc'
@spec.compiler_flags.should == { :ios => compiler_flags, :osx => compiler_flags }
end
it "returns the same list of dependencies for each platform" do
dependencies = %w{ JSONKit SSZipArchive }.map { |name| Pod::Dependency.new(name) }
@spec.dependencies.should == { :ios => dependencies, :osx => dependencies }
end
end
describe "when platform specific values are given" do
before do
@spec = Pod::Spec.new do |s|
s.ios.source_file = 'file1'
s.osx.source_files = 'file1', 'file2'
s.ios.resource = 'file1'
s.osx.resources = 'file1', 'file2'
s.ios.xcconfig = { 'OTHER_LDFLAGS' => '-lObjC' }
s.osx.xcconfig = { 'OTHER_LDFLAGS' => '-lObjC -all_load' }
s.ios.framework = 'QuartzCore'
s.osx.frameworks = 'QuartzCore', 'CoreData'
s.ios.library = 'z'
s.osx.libraries = 'z', 'xml'
s.ios.compiler_flags = '-Wdeprecated-implementations'
s.osx.compiler_flags = '-Wfloat-equal'
s.requires_arc = true # does not take platform options, just here to check it's added to compiler_flags
s.ios.dependency 'JSONKit'
s.osx.dependency 'SSZipArchive'
end
end
it "returns a different list of source files for each platform" do
@spec.source_files.should == { :ios => %w{ file1 }, :osx => %w{ file1 file2 } }
end
it "returns a different list of resources for each platform" do
@spec.resources.should == { :ios => %w{ file1 }, :osx => %w{ file1 file2 } }
end
it "returns a different list of xcconfig build settings for each platform" do
@spec.xcconfig.should == {
:ios => { 'OTHER_LDFLAGS' => '-lObjC -framework QuartzCore -lz' },
:osx => { 'OTHER_LDFLAGS' => '-lObjC -all_load -framework QuartzCore -framework CoreData -lz -lxml' }
}
end
it "returns the same list of compiler flags for each platform" do
@spec.compiler_flags.should == {
:ios => '-Wdeprecated-implementations -fobjc-arc',
:osx => '-Wfloat-equal -fobjc-arc'
}
end
it "returns the same list of dependencies for each platform" do
@spec.dependencies.should == {
:ios => Pod::Dependency.new('JSONKit'),
:osx => Pod::Dependency.new('SSZipArchive')
}
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