diff --git a/lib/xcodeproj/project/object/target_dependency.rb b/lib/xcodeproj/project/object/target_dependency.rb index 9f658066e..e1e133e58 100644 --- a/lib/xcodeproj/project/object/target_dependency.rb +++ b/lib/xcodeproj/project/object/target_dependency.rb @@ -47,6 +47,7 @@ def display_name def native_target_uuid return target.uuid if target return target_proxy.remote_global_id_string if target_proxy + raise 'Expected target or target_proxy, from which to fetch a uuid' end # @note This override is necessary because Xcode allows for circular diff --git a/spec/project/object/target_dependency_spec.rb b/spec/project/object/target_dependency_spec.rb index 0d980d78f..18850a08f 100644 --- a/spec/project/object/target_dependency_spec.rb +++ b/spec/project/object/target_dependency_spec.rb @@ -62,5 +62,36 @@ module ProjectSpecs end #----------------------------------------# + + describe '#native_target_uuid' do + it "returns the target_proxy's remote_global_uuid_string" do + target = @project.new_target(:static, 'Pods', :ios) + + proxy = @project.new(PBXContainerItemProxy) + proxy.container_portal = @project.root_object.uuid + proxy.remote_info = 'Pods' + proxy.proxy_type = '1' + proxy.remote_global_id_string = target.uuid + + @target_dependency.target_proxy = proxy + @target_dependency.target_proxy.remote_global_id_string.nil?.should == false + @target_dependency.native_target_uuid.should == @target_dependency.target_proxy.remote_global_id_string + end + + it "returns the target's uuid" do + target = @project.new_target(:static, 'Pods', :ios) + @target_dependency.target = target + @target_dependency.target.uuid.nil?.should == false + @target_dependency.native_target_uuid.should == @target_dependency.target.uuid + end + + it "raises if target and target_proxy aren't set" do + @target_dependency.target.nil?.should == true + @target_dependency.target_proxy.nil?.should == true + should.raise do + @target_dependency.native_target_uuid + end.message.should.match /Expected target or target_proxy, from which to fetch a uuid/ + end + end end end