I am using CocoaPods for a project with the following structure:
Example/
Example/PublicUmbrellaHeader.h
Example/PrivateHeaderForComponent1.h
Example/PrivateHeaderForComponent2.h
Example.podspec
Tests/
Tests/Podfile
Tests/Tests/UnitTestForPrivateComponent1.m
Tests/Tests/UnitTestForPrivateComponent2.m
Tests/Podfile
pod 'Example', :path => '../'
This is not unusual. For example, AFNetworking follows a similar structure. What is different is the need to expose a certain set of headers only to the unit tests.
However, I could not figure out a straightforward way to do this accomplish this. The
following method works, but it is not clean in the sense that it requires surgery on
the public Podspec
.
Example.podspec
s.public_header_files = 'Example/PublicUmbrellaHeader.h'
s.default_subspec = 'Public'
s.subspec 'Public'
s.subspec 'Tests' do |ss|
ss.public_header_files = 'Example/*.h'
end
Tests/Podfile
pod 'Example', :path => '../'
pod 'Example/Tests', :path => '../'
Is there a simpler way? If not, is it because there is something wrong with what I am trying to accomplish, or simply because CocoaPods does not cater to this use case yet?