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]
