Re: Permission Denied trying to connect to localhost in unit test
Re: Permission Denied trying to connect to localhost in unit test
- Subject: Re: Permission Denied trying to connect to localhost in unit test
- From: Keary Suska via Cocoa-dev <email@hidden>
- Date: Fri, 13 Dec 2019 07:18:34 -1000
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@hidden> 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@hidden>
> Sent: Thursday, December 12, 2019 1:58 PM
> To: Robert Walsh <email@hidden>
> Cc: Cocoa-Dev (Apple) <email@hidden>
> 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@hidden<mailto:email@hidden>> 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@hidden)
>
> 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:
>
> This email sent to email@hidden
_______________________________________________
Cocoa-dev mailing list (email@hidden)
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:
This email sent to email@hidden