I would first test to see if you can access networking at all—i.e. connect to a 
public HTTP server and see if it works. If it doesn’t, then you are probably 
running against the entitlements issue. I suspect that the “dummy target” 
indicated is simply a GUI app wrapper built just for testing but not for 
deployment. Should be easy enough because it doesn’t have to do anything in the 
GUI.

Keary Suska
Esoteritech, Inc.


> On Dec 13, 2019, at 4:42 AM, Robert Walsh via Cocoa-dev 
> <[email protected]> wrote:
> 
> The errno is 13 (which I think is just a generic Permission Denied).
> 
> I am connecting to localhost.
> 
> I did find this post in the Apple Developer Forums 
> (https://forums.developer.apple.com/thread/52211):
> How do I unittest a command line application? |Apple Developer 
> Forums<https://forums.developer.apple.com/thread/52211>
> Yes, you can add the unit testing bundle, but it won't let you set Target to 
> be Tested.. Right. That’s because the machinery to load your test bundle 
> within a process only works if the process is based on a GUI framework (like 
> Cocoa or Cocoa Touch).
> forums.developer.apple.com
> 
> 
> A command line tool typically does not use a GUI framework and thus the test 
> machinery is unable to load your bundle into that tool.
> 
> However, you can test without an app target.  If you set the Target to be 
> Tested popup to None, Xcode will load your test bundle into its built-in 
> ‘test runner’ tool, xctest.
> 
> This works well for most but there are some gotchas.  Specifically, if the 
> code you’re using requires entitlements then you won’t be able to test it 
> like this because there’s no way to give those entitlements to xctest.  The 
> standard workaround for that is to add a dummy test target app to your 
> project.
> 
> 
> Assuming the problem is that I need to add the App Sandbox -> Outgoing 
> Connections (Client) entitlement to the command line target (since I can't 
> add any entitlements to the test target; clicking "+ Capabilities" brings up 
> a dialog saying that capabilities are not support for this target), how do I 
> create "a dummy test target app?"  As I said before, I created the test 
> target by using the Unit Test Bundle template, and I don't see any other 
> relevant choices.
> 
> 
> Rob
> 
> 
> ________________________________
> From: Jens Alfke <[email protected]>
> Sent: Thursday, December 12, 2019 1:58 PM
> To: Robert Walsh <[email protected]>
> Cc: Cocoa-Dev (Apple) <[email protected]>
> Subject: Re: Permission Denied trying to connect to localhost in unit test
> 
> 
> 
> On Dec 12, 2019, at 7:42 AM, Robert Walsh via Cocoa-dev 
> <[email protected]<mailto:[email protected]>> wrote:
> 
> I am writing a command line application in Objective-C that needs to make a 
> TCP connection to a server.  In a unit test for the TcpClient class I am 
> writing, I have a simple TCP server that listens for connections in a thread. 
>  When I try to connect to this socket from the client socket class, connect() 
> fails and perror reports Permission Denied.
> 
> That's odd. I've written plenty of macOS networking code and not seen this 
> problem. What is the errno value?
> 
> The only thing I can guess is that the Xcode test-runner process is being 
> sandboxed to prevent outgoing networking, but I've definitely run TCP 
> connections from XCTests without problems. Are you connecting to "localhost" 
> / 127.0.0.1, or using an explicit IP address?
> 
> —Jens
> _______________________________________________
> 
> Cocoa-dev mailing list ([email protected])
> 
> Please do not post admin requests or moderator comments to the list.
> Contact the moderators at cocoa-dev-admins(at)lists.apple.com
> 
> Help/Unsubscribe/Update your Subscription:
> https://lists.apple.com/mailman/options/cocoa-dev/cocoa-dev%40esoteritech.com
> 
> This email sent to [email protected]

_______________________________________________

Cocoa-dev mailing list ([email protected])

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to [email protected]

Reply via email to