Commit f1b2521b authored by Samuel E. Giddins's avatar Samuel E. Giddins

Merge pull request #4824 from CocoaPods/seg-no-import-not-should-build

[Validator] Only import if the pod target is being built
parents 451e5eaa 1ae2f51f
...@@ -40,6 +40,11 @@ To install release candidates run `[sudo] gem install cocoapods --pre` ...@@ -40,6 +40,11 @@ To install release candidates run `[sudo] gem install cocoapods --pre`
* Share user schemes of `Pods.xcodeproj` after generating deterministic UUIDS. * Share user schemes of `Pods.xcodeproj` after generating deterministic UUIDS.
[Samuel Giddins](https://github.com/segiddins) [Samuel Giddins](https://github.com/segiddins)
* Only attempt to `import` a framework during linting if the pod has source
files, and is thus being built by CocoaPods.
[Samuel Giddins](https://github.com/segiddins)
[#4823](https://github.com/CocoaPods/CocoaPods/issues/4823)
## 1.0.0.beta.2 (2016-01-05) ## 1.0.0.beta.2 (2016-01-05)
......
...@@ -122,7 +122,7 @@ GEM ...@@ -122,7 +122,7 @@ GEM
thread_safe (~> 0.3, >= 0.3.4) thread_safe (~> 0.3, >= 0.3.4)
tzinfo (~> 1.1) tzinfo (~> 1.1)
addressable (2.3.6) addressable (2.3.6)
ast (2.1.0) ast (2.2.0)
astrolabe (1.3.1) astrolabe (1.3.1)
parser (~> 2.2) parser (~> 2.2)
awesome_print (1.6.1) awesome_print (1.6.1)
...@@ -167,8 +167,8 @@ GEM ...@@ -167,8 +167,8 @@ GEM
nap (1.0.0) nap (1.0.0)
netrc (0.7.8) netrc (0.7.8)
notify (0.5.2) notify (0.5.2)
parser (2.2.2.6) parser (2.3.0.2)
ast (>= 1.1, < 3.0) ast (~> 2.2)
powerpack (0.1.1) powerpack (0.1.1)
prettybacon (0.0.2) prettybacon (0.0.2)
bacon (~> 1.2) bacon (~> 1.2)
......
...@@ -399,12 +399,12 @@ module Pod ...@@ -399,12 +399,12 @@ module Pod
if language == :swift if language == :swift
source_file = validation_dir.+('App/main.swift') source_file = validation_dir.+('App/main.swift')
source_file.parent.mkpath source_file.parent.mkpath
import_statement = use_frameworks ? "import #{pod_target.product_module_name}\n" : '' import_statement = use_frameworks && pod_target.should_build? ? "import #{pod_target.product_module_name}\n" : ''
source_file.open('w') { |f| f << import_statement } source_file.open('w') { |f| f << import_statement }
else else
source_file = validation_dir.+('App/main.m') source_file = validation_dir.+('App/main.m')
source_file.parent.mkpath source_file.parent.mkpath
import_statement = if use_frameworks import_statement = if use_frameworks && pod_target.should_build?
"@import #{pod_target.product_module_name};\n" "@import #{pod_target.product_module_name};\n"
else else
header_name = "#{pod_target.product_module_name}/#{pod_target.product_module_name}.h" header_name = "#{pod_target.product_module_name}/#{pod_target.product_module_name}.h"
......
...@@ -496,7 +496,7 @@ module Pod ...@@ -496,7 +496,7 @@ module Pod
end end
it 'creates a swift import' do it 'creates a swift import' do
pod_target = stub(:uses_swift? => true, :product_module_name => 'ModuleName') pod_target = stub(:uses_swift? => true, :should_build? => true, :product_module_name => 'ModuleName')
file = @validator.send(:write_app_import_source_file, pod_target) file = @validator.send(:write_app_import_source_file, pod_target)
file.basename.to_s.should == 'main.swift' file.basename.to_s.should == 'main.swift'
...@@ -506,7 +506,7 @@ module Pod ...@@ -506,7 +506,7 @@ module Pod
end end
it 'creates an objective-c import' do it 'creates an objective-c import' do
pod_target = stub(:uses_swift? => false, :product_module_name => 'ModuleName') pod_target = stub(:uses_swift? => false, :should_build? => true, :product_module_name => 'ModuleName')
file = @validator.send(:write_app_import_source_file, pod_target) file = @validator.send(:write_app_import_source_file, pod_target)
file.basename.to_s.should == 'main.m' file.basename.to_s.should == 'main.m'
...@@ -517,6 +517,14 @@ module Pod ...@@ -517,6 +517,14 @@ module Pod
int main() {} int main() {}
OBJC OBJC
end end
it 'creates no import when the pod target has no source files' do
pod_target = stub(:uses_swift? => true, :should_build? => false)
file = @validator.send(:write_app_import_source_file, pod_target)
file.basename.to_s.should == 'main.swift'
file.read.should == ''
end
end end
describe 'when linting as a static lib' do describe 'when linting as a static lib' do
...@@ -526,7 +534,7 @@ module Pod ...@@ -526,7 +534,7 @@ module Pod
end end
it 'creates an objective-c import when a plausible umbrella header is found' do it 'creates an objective-c import when a plausible umbrella header is found' do
pod_target = stub(:uses_swift? => false, :product_module_name => 'ModuleName', :sandbox => @sandbox) pod_target = stub(:uses_swift? => false, :should_build? => true, :product_module_name => 'ModuleName', :sandbox => @sandbox)
header_name = "#{pod_target.product_module_name}/#{pod_target.product_module_name}.h" header_name = "#{pod_target.product_module_name}/#{pod_target.product_module_name}.h"
umbrella = pod_target.sandbox.public_headers.root.+(header_name) umbrella = pod_target.sandbox.public_headers.root.+(header_name)
umbrella.dirname.mkpath umbrella.dirname.mkpath
...@@ -543,7 +551,7 @@ module Pod ...@@ -543,7 +551,7 @@ module Pod
end end
it 'does not create an objective-c import when no umbrella header is found' do it 'does not create an objective-c import when no umbrella header is found' do
pod_target = stub(:uses_swift? => false, :product_module_name => 'ModuleName', :sandbox => @sandbox) pod_target = stub(:uses_swift? => false, :should_build? => true, :product_module_name => 'ModuleName', :sandbox => @sandbox)
file = @validator.send(:write_app_import_source_file, pod_target) file = @validator.send(:write_app_import_source_file, pod_target)
file.basename.to_s.should == 'main.m' file.basename.to_s.should == 'main.m'
...@@ -559,7 +567,7 @@ module Pod ...@@ -559,7 +567,7 @@ module Pod
it 'adds the importing file to the app target' do it 'adds the importing file to the app target' do
@validator.stubs(:use_frameworks).returns(true) @validator.stubs(:use_frameworks).returns(true)
@validator.send(:create_app_project) @validator.send(:create_app_project)
pod_target = stub(:uses_swift? => true, :pod_name => 'JSONKit', :product_module_name => 'ModuleName') pod_target = stub(:uses_swift? => true, :should_build? => true, :pod_name => 'JSONKit', :product_module_name => 'ModuleName')
installer = stub(:pod_targets => [pod_target]) installer = stub(:pod_targets => [pod_target])
@validator.instance_variable_set(:@installer, installer) @validator.instance_variable_set(:@installer, installer)
@validator.send(:add_app_project_import) @validator.send(:add_app_project_import)
......
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