Swift3 rewriting for XCTest APIs

For the most part, the automatic heuristics seem to be doing the right things 
for Xcode’s XCTest.  We have identified a few cases where we should perhaps 
discuss doing a little extra. Almost everything seems like it imports 
reasonably according to the API guidelines 
(https://swift.org/documentation/api-design-guidelines/ 
<https://swift.org/documentation/api-design-guidelines/>). The few cases that 
we think need tweaking are detailed here.

These are the changes from how the API imports automatically that we are 
considering. I would love to hear any comments or suggestions.

addTest[Run]()

There’s a glitch in the importer that is making XCTestSuioteRun’s addTestRun: 
import as addTest. We’re tracking this as a bug in the importer. In the 
meantime, I would fix this in Xcode’s XCTest explicitly.

        Existing imported method
        XCTestSuiteRun.addTest(testRun: XCTestRun)  

        Suggested new name
        XCTestSuiteRun.addTestRun(testRun: XCTestRun)

Bound(by: vs. (boundBy:

Here, the importer just isn't smart enough to detect that the prepositional 
phrase that really identifies the argument is "boundBy", not "by”. We’re also 
tracking this as a possible thing to fix in the importer. In the meantime, I 
would fix this in Xcode’s XCTest explicitly.

        Existing imported method
        XCUIElementQuery.elementBound(by index: UInt) -> XCUIElement

        Suggested new name
        XCUIElementQuery.element(boundBy index: UInt) -> XCUIElement

Query "matching..."

This next little family is a bit more subtle. The first two have a noun which 
just restates the type, so by the guidelines we would remove them. Technically 
the last one's noun is a role, not a type and so what the importer is doing is 
correct. But it feels inconsistent if we remove the type names but leave that 
one alone. To make it a little more consistent, the suggestion is to move 
identifier inside the parens as a required label so all these related functions 
have the same "outside the parens" part of their names.

        Existing imported method
        XCUIElementQuery.matchingPredicate(predicate: NSPredicate) -> 
XCUIElementQuery
        XCUIElementQuery.matchingType(elementType: XCUIElementType, identifier: 
String?) -> XCUIElementQuery
        XCUIElementQuery.matchingIdentifier(identifier: String) -> 
XCUIElementQuery

        Suggested new name
        XCUIElementQuery.matching(predicate: NSPredicate) -> XCUIElementQuery
        XCUIElementQuery.matching(elementType: XCUIElementType, identifier: 
String?) -> XCUIElementQuery
        XCUIElementQuery.matching(identifier identifier: String) -> 
XCUIElementQuery

_______________________________________________
swift-corelibs-dev mailing list
swift-corelibs-dev@swift.org
https://lists.swift.org/mailman/listinfo/swift-corelibs-dev

Reply via email to