This is not an answer but an expanded example:
class TestAwaitTests: XCTestCase {
struct Thing {
let value = true
func doSomething() async throws -> Int? {
try await Task.sleep(nanoseconds: 5_000_000_000)
return 1
}
}
func validation(thing: Thing, file: StaticString = #file, line: UInt = #line) {
XCTAssertFalse(thing.value)
XCTAssertTrue(thing.value) // Breakpoint here
}
func testTest() async throws {
continueAfterFailure = false
let thing = Thing()
let result = try await thing.doSomething()
print("print 1")
XCTAssertNil(result)
print("print 2")
XCTAssertNotNil(result)
print("print 3")
validation(thing: thing)
enum Err: Error { case oops }
throw Err.oops
print("print 4")
}
}
Results in the console output
print 1
print 2
print 3
The test fails, as expected. What is unexpected is that the statements print 2 and print 3 are produced. The line marked Breakpoint here should never execute. I can see it hit even in the debugger continueAfterFailure should be stopping the test first assertion.
Post
Replies
Boosts
Views
Activity
Clarification: In the actual test I am using XCTAssertNil, the XCTAssertNotNil was added for testing that the test exits on assertion failure. Sorry for the confusion. Either way, validate shouldn't be reached.
The setting is BUILD_LIBRARY_FOR_DISTRIBUTION. Singular not plural. I was running into this as well and just coded it up.
Your problems lay with provisioning. On a development team typically one member has an account that the project is managed under and will invite other users to be members of that team. A unique Apple ID can be a member of multiple teams, which has really streamlined things. This way by setting all the provisioning to a Team account you don't have to worry about other members checking in their provisioning into your version control. Ideally you'll have Xcode manage all your provisioning.
As your teams and builds become more complicated the profile management does too, but It sounds like you're in a position for Xcode to do it all.
App crashes are the responsibility of the developer.