Commit 68f22d19 authored by Fabio Pelosin's avatar Fabio Pelosin

[#221] Completed merge.

parent d0a215c7
...@@ -72,7 +72,7 @@ module Pod ...@@ -72,7 +72,7 @@ module Pod
end end
@target.add_source_files(source_file_descriptions) @target.add_source_files(source_file_descriptions)
xcconfig.merge!('HEADER_SEARCH_PATHS' => quoted(sandbox.header_search_paths).join(" ")) xcconfig.merge!('HEADER_SEARCH_PATHS' => quoted(sandbox.build_headers.search_paths).join(" "))
# Indirect HEADER_SEARCH_PATHS, so that configure_build_configurations can override it # Indirect HEADER_SEARCH_PATHS, so that configure_build_configurations can override it
xcconfig.merge!('PODS_HEADER_SEARCH_PATHS' => quoted(sandbox.public_headers.search_paths).join(" ")) xcconfig.merge!('PODS_HEADER_SEARCH_PATHS' => quoted(sandbox.public_headers.search_paths).join(" "))
......
...@@ -229,14 +229,22 @@ module Pod ...@@ -229,14 +229,22 @@ module Pod
result result
end end
# TODO: complete, fix and comment # @return [Hash{Specification => Array<Pathname>}] The paths of the public
# header files grouped by {Specification}.
#
# @TODO: complete, fix and comment
# @TODO: decide a policy for subspecs
#
def public_header_files_by_specs def public_header_files_by_specs
if specification.public_header_files.empty? cached_header_files_by_spec = header_files_by_spec
header_files_by_spec public_header_files = paths_by_spec(:source_files, :glob => '*.h')
else
options = {:glob => '*.h'} result = {}
paths_by_spec(:source_files, options) public_header_files.map do |spec, paths|
result[spec] = paths.empty? ? cached_header_files_by_spec[spec] : paths
end end
result
end end
# @return [Array<Pathname>] The paths of the resources. # @return [Array<Pathname>] The paths of the resources.
...@@ -332,14 +340,14 @@ module Pod ...@@ -332,14 +340,14 @@ module Pod
# @return [void] Copies the pods headers to the sandbox. # @return [void] Copies the pods headers to the sandbox.
# #
def link_headers def link_headers
@sandbox.add_header_search_path(headers_sandbox) @sandbox.build_headers.add_search_path(headers_sandbox)
header_mappings.each do |namespaced_path, files| header_mappings.each do |namespaced_path, files|
@sandbox.build_header_storage.add_files(namespaced_path, files) @sandbox.build_headers.add_files(namespaced_path, files)
end end
@sandbox.public_headers.add_search_path(headers_sandbox)
public_header_mappings.each do |namespaced_path, files| public_header_mappings.each do |namespaced_path, files|
@sandbox.public_header_storage.add_files(namespaced_path, files) @sandbox.public_headers.add_files(namespaced_path, files)
end end
end end
......
...@@ -87,8 +87,8 @@ module Pod ...@@ -87,8 +87,8 @@ module Pod
# #
# @return [void] # @return [void]
# #
def add_header_search_path(path) def add_search_path(path)
@header_search_paths << Pathname.new(HEADERS_DIR) + path @search_paths << path
end end
def prepare_for_install def prepare_for_install
......
...@@ -40,6 +40,7 @@ module Pod ...@@ -40,6 +40,7 @@ module Pod
# multi-platform attributes # multi-platform attributes
%w[ source_files %w[ source_files
public_header_files
resources resources
preserve_paths preserve_paths
exclude_header_search_paths exclude_header_search_paths
......
...@@ -34,7 +34,7 @@ describe "Pod::Command::Spec#create" do ...@@ -34,7 +34,7 @@ describe "Pod::Command::Spec#create" do
spec.source.should == { :git => 'http://EXAMPLE/Bananas.git', :tag => '0.0.1' } spec.source.should == { :git => 'http://EXAMPLE/Bananas.git', :tag => '0.0.1' }
spec.description.should == 'A short description of Bananas.' spec.description.should == 'A short description of Bananas.'
spec.source_files.should == ['Classes', 'Classes/**/*.{h,m}'] spec.source_files.should == ['Classes', 'Classes/**/*.{h,m}']
spec.public_header_files[:ios].should == [] spec.public_header_files.should == []
end end
it "correctly creates a podspec from github" do it "correctly creates a podspec from github" do
......
...@@ -11,26 +11,6 @@ describe Pod::LocalPod do ...@@ -11,26 +11,6 @@ describe Pod::LocalPod do
copy_fixture_to_pod('banana-lib', @pod) copy_fixture_to_pod('banana-lib', @pod)
end end
it "can link it's headers into the sandbox" do
@pod.link_headers
expected_header_path = @sandbox.build_headers.root + "BananaLib/Banana.h"
expected_header_path.should.be.symlink
File.read(expected_header_path).should == (@sandbox.root + @pod.header_files[0]).read
end
it "can add it's source files to an Xcode project target" do
target = mock('target')
target.expects(:add_source_file).with(Pathname.new("BananaLib/Classes/Banana.m"), anything, anything)
@pod.add_to_target(target)
end
it "can add it's source files to a target with any specially configured compiler flags" do
@pod.specification.compiler_flags = '-d some_flag'
target = mock('target')
target.expects(:add_source_file).with(anything, anything, "-d some_flag")
@pod.add_to_target(target)
end
it 'returns the Pod root directory path' do it 'returns the Pod root directory path' do
@pod.root.should == @sandbox.root + 'BananaLib' @pod.root.should == @sandbox.root + 'BananaLib'
end end
...@@ -70,16 +50,6 @@ describe Pod::LocalPod do ...@@ -70,16 +50,6 @@ describe Pod::LocalPod do
@pod.relative_header_files.should == [Pathname.new("BananaLib/Classes/Banana.h")] @pod.relative_header_files.should == [Pathname.new("BananaLib/Classes/Banana.h")]
end end
xit "returns the user header search paths" do
def @spec.copy_header_mapping(from)
Pathname.new('ns') + from.basename
end
@spec.build_headers.search_paths.should == %w{
"$(PODS_ROOT)/Headers/SSZipArchive"
"$(PODS_ROOT)/Headers/SSZipArchive/ns"
}
end
it 'returns a list of header files by specification' do it 'returns a list of header files by specification' do
files = @pod.header_files_by_spec[@pod.specifications.first].sort files = @pod.header_files_by_spec[@pod.specifications.first].sort
files.should == [ @pod.root + "Classes/Banana.h" ] files.should == [ @pod.root + "Classes/Banana.h" ]
...@@ -100,7 +70,14 @@ describe Pod::LocalPod do ...@@ -100,7 +70,14 @@ describe Pod::LocalPod do
it "can link it's headers into the sandbox" do it "can link it's headers into the sandbox" do
@pod.link_headers @pod.link_headers
expected_header_path = @sandbox.headers_root + "BananaLib/Banana.h" expected_header_path = @sandbox.build_headers.root + "BananaLib/Banana.h"
expected_header_path.should.be.symlink
File.read(expected_header_path).should == (@sandbox.root + @pod.header_files[0]).read
end
it "can link it's public headers into the sandbox" do
@pod.link_headers
expected_header_path = @sandbox.public_headers.root + "BananaLib/Banana.h"
expected_header_path.should.be.symlink expected_header_path.should.be.symlink
File.read(expected_header_path).should == (@sandbox.root + @pod.header_files[0]).read File.read(expected_header_path).should == (@sandbox.root + @pod.header_files[0]).read
end end
...@@ -321,8 +298,10 @@ describe Pod::LocalPod do ...@@ -321,8 +298,10 @@ describe Pod::LocalPod do
"Chameleon/UIKit > UIKit/Classes/UIView.h UIKit/Classes/UIWindow.h" ] "Chameleon/UIKit > UIKit/Classes/UIView.h UIKit/Classes/UIWindow.h" ]
end end
# This is done by the sandbox and this test should be moved
it "includes the sandbox of the pod's headers while linking" do it "includes the sandbox of the pod's headers while linking" do
@sandbox.expects(:add_header_search_path).with(Pathname.new('Chameleon')) @sandbox.build_headers.expects(:add_search_path).with(Pathname.new('Chameleon'))
@sandbox.public_headers.expects(:add_search_path).with(Pathname.new('Chameleon'))
@pod.link_headers @pod.link_headers
end end
end end
......
...@@ -24,13 +24,17 @@ describe Pod::Sandbox do ...@@ -24,13 +24,17 @@ describe Pod::Sandbox do
end end
it "returns it's headers root" do it "returns it's headers root" do
@sandbox.build_headers.root.should == Pathname.new(File.join(TMP_POD_ROOT, "Headers")) @sandbox.build_headers.root.should == Pathname.new(File.join(TMP_POD_ROOT, "BuildHeaders"))
end
it "returns it's public headers root" do
@sandbox.public_headers.root.should == Pathname.new(File.join(TMP_POD_ROOT, "Headers"))
end end
it "can add namespaced headers to it's header path using symlinks and return the relative path" do it "can add namespaced headers to it's header path using symlinks and return the relative path" do
FileUtils.mkdir_p(@sandbox.root + "ExampleLib/Headers") FileUtils.mkdir_p(@sandbox.root + "ExampleLib/BuildHeaders")
namespace_path = Pathname.new("ExampleLib") namespace_path = Pathname.new("ExampleLib")
relative_header_path = Pathname.new("ExampleLib/Headers/MyHeader.h") relative_header_path = Pathname.new("ExampleLib/BuildHeaders/MyHeader.h")
File.open(@sandbox.root + relative_header_path, "w") { |file| file.write('hello') } File.open(@sandbox.root + relative_header_path, "w") { |file| file.write('hello') }
symlink_path = @sandbox.build_headers.add_file(namespace_path, relative_header_path) symlink_path = @sandbox.build_headers.add_file(namespace_path, relative_header_path)
symlink_path.should.be.symlink symlink_path.should.be.symlink
...@@ -38,11 +42,11 @@ describe Pod::Sandbox do ...@@ -38,11 +42,11 @@ describe Pod::Sandbox do
end end
it 'can add multiple headers at once and return the relative symlink paths' do it 'can add multiple headers at once and return the relative symlink paths' do
FileUtils.mkdir_p(@sandbox.root + "ExampleLib/Headers") FileUtils.mkdir_p(@sandbox.root + "ExampleLib/BuildHeaders")
namespace_path = Pathname.new("ExampleLib") namespace_path = Pathname.new("ExampleLib")
relative_header_paths = [ relative_header_paths = [
Pathname.new("ExampleLib/Headers/MyHeader.h"), Pathname.new("ExampleLib/BuildHeaders/MyHeader.h"),
Pathname.new("ExampleLib/Headers/MyOtherHeader.h") Pathname.new("ExampleLib/BuildHeaders/MyOtherHeader.h")
] ]
relative_header_paths.each do |path| relative_header_paths.each do |path|
File.open(@sandbox.root + path, "w") { |file| file.write('hello') } File.open(@sandbox.root + path, "w") { |file| file.write('hello') }
...@@ -55,21 +59,21 @@ describe Pod::Sandbox do ...@@ -55,21 +59,21 @@ describe Pod::Sandbox do
end end
it 'keeps a list of unique header search paths when headers are added' do it 'keeps a list of unique header search paths when headers are added' do
FileUtils.mkdir_p(@sandbox.root + "ExampleLib/Headers") FileUtils.mkdir_p(@sandbox.root + "ExampleLib/BuildHeaders")
namespace_path = Pathname.new("ExampleLib") namespace_path = Pathname.new("ExampleLib")
relative_header_paths = [ relative_header_paths = [
Pathname.new("ExampleLib/Headers/MyHeader.h"), Pathname.new("ExampleLib/BuildHeaders/MyHeader.h"),
Pathname.new("ExampleLib/Headers/MyOtherHeader.h") Pathname.new("ExampleLib/BuildHeaders/MyOtherHeader.h")
] ]
relative_header_paths.each do |path| relative_header_paths.each do |path|
File.open(@sandbox.root + path, "w") { |file| file.write('hello') } File.open(@sandbox.root + path, "w") { |file| file.write('hello') }
end end
@sandbox.build_headers.add_files(namespace_path, relative_header_paths) @sandbox.build_headers.add_files(namespace_path, relative_header_paths)
@sandbox.header_search_paths.should.include("${PODS_ROOT}/Headers/ExampleLib") @sandbox.build_headers.search_paths.should.include("${PODS_ROOT}/BuildHeaders/ExampleLib")
end end
it 'always adds the Headers root to the header search paths' do it 'always adds the Headers root to the header search paths' do
@sandbox.header_search_paths.should.include("${PODS_ROOT}/Headers") @sandbox.build_headers.search_paths.should.include("${PODS_ROOT}/BuildHeaders")
end end
it 'clears out its headers root when preparing for install' do it 'clears out its headers root when preparing for install' do
......
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