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 <j...@mooseyard.com>
Sent: Thursday, December 12, 2019 1:58 PM
To: Robert Walsh <rwa...@envisionware.com>
Cc: Cocoa-Dev (Apple) <cocoa-dev@lists.apple.com>
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 
<cocoa-dev@lists.apple.com<mailto:cocoa-dev@lists.apple.com>> 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 (Cocoa-dev@lists.apple.com)

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 arch...@mail-archive.com

Reply via email to