Darren Black
Darren Black

Reputation: 1040

Unable to run XCTests on iOS device

I've recently noticed that I can't run tests on my iOS devices. I've tried on both an iPhone 5 and an iPhone 6. Both fail with an error like this:

2015-07-13 12:32:26.930 MyApp[1316:735999] Error loading /private/var/mobile/Containers/Data/Application/B23BED3F-5D59-4727-9AAB-1155A3F3A8F2/tmp/MyApp Tests.xctest/MyApp Tests:  dlopen(/private/var/mobile/Containers/Data/Application/B23BED3F-5D59-4727-9AAB-1155A3F3A8F2/tmp/MyApp Tests.xctest/MyApp Tests, 262): no suitable image found.  Did find:
    /private/var/mobile/Containers/Data/Application/B23BED3F-5D59-4727-9AAB-1155A3F3A8F2/tmp/MyApp Tests.xctest/MyApp Tests: mmap() error 1 at address=0x0042C000, size=0x00099000 segment=__TEXT in Segment::map() mapping /private/var/mobile/Containers/Data/Application/B23BED3F-5D59-4727-9AAB-1155A3F3A8F2/tmp/MyApp Tests.xctest/MyApp Tests
DevToolsBundleInjection: Error loading bundle '/private/var/mobile/Containers/Data/Application/B23BED3F-5D59-4727-9AAB-1155A3F3A8F2/tmp/MyApp Tests.xctest'

All the other test errors I've found on the net with this format are code signing errors. This doesn't appear to be the case here...

As with the other errors like this, the test waits for a minute or two, and then fails with a dump like this:

* thread #1: tid = 0xb3aff, 0x33d0e474 libsystem_kernel.dylib`mach_msg_trap + 20, queue = 'com.apple.main-thread', stop reason = signal SIGSTOP
  * frame #0: 0x33d0e474 libsystem_kernel.dylib`mach_msg_trap + 20
    frame #1: 0x33d0e26c libsystem_kernel.dylib`mach_msg + 40
    frame #2: 0x24fc7572 CoreFoundation`__CFRunLoopServiceMachPort + 146
    frame #3: 0x24fc5b18 CoreFoundation`__CFRunLoopRun + 1016
    frame #4: 0x24f12200 CoreFoundation`CFRunLoopRunSpecific + 476
    frame #5: 0x24f12012 CoreFoundation`CFRunLoopRunInMode + 106
    frame #6: 0x2c9e3200 GraphicsServices`GSEventRunModal + 136
    frame #7: 0x286dea08 UIKit`UIApplicationMain + 1440
    frame #8: 0x000ececc MyApp`main(argc=10, argv=0x003f0488) + 108 at main.m:16

  thread #2: tid = 0xb3b16, 0x33d0e224 libsystem_kernel.dylib`kevent64 + 24, queue = 'com.apple.libdispatch-manager'
    frame #0: 0x33d0e224 libsystem_kernel.dylib`kevent64 + 24
    frame #1: 0x33c430f0 libdispatch.dylib`_dispatch_mgr_invoke + 280
    frame #2: 0x33c37d3a libdispatch.dylib`_dispatch_mgr_thread + 38


*** Canceling tests due to timeout in Waiting for test process to check in... If you believe this error represents a bug, please attach the log file at /var/folders/yz/xbdghvnj1_7fhsrwl5v232b40000gn/T/com.apple.dt.XCTest-status/Session-2015-07-13_12:31:55-JkrDBi.log

Any ideas why this might be happening?

Upvotes: 0

Views: 951

Answers (1)

Darren Black
Darren Black

Reputation: 1040

So... despite my belief to the contrary, this is a code-signing issue. Manually setting the provisioning profile on the test target (not the product target) in Xcode got my test up and running through the device.

The test fails in a new and unexpected (something semaphore-related) way compared to the iOS Simulator, but that's a whole different discussion.

Hope this helps somebody.

Upvotes: 4

Related Questions