One possible direction to consider which would be more consistent with our 
goals this year for API-compatibility would be to look into implementing 
XCTestObserver.

Mike

> On Dec 3, 2015, at 8:03 PM, Tony Parker <anthony.par...@apple.com> wrote:
> 
> Hi Brian,
> 
>> On Dec 3, 2015, at 3:45 PM, Brian Gesiak <modoca...@gmail.com 
>> <mailto:modoca...@gmail.com>> wrote:
>> 
>> Hello! This is in reference to 
>> https://github.com/apple/swift-corelibs-xctest/pull/3 
>> <https://github.com/apple/swift-corelibs-xctest/pull/3>. That pull request 
>> contains a commit that attempts to refactor XCTest such that it is more 
>> "unit-testable”.
>> 
> 
> Cool, thanks for looking into this area.
> 
>> To do so, it gives XCTMain an additional parameter: a list of objects 
>> conforming to the Reporter protocol. I think of this as a minimal, corelibs 
>> equivalent to Apple's XCTest's XCTestObserver.h. I say "minimal" because 
>> Reporter only defines Reporter.log(), whereas XCTestObserver has one method 
>> for each kind of test event (started, failed, finished, etc.).
>> 
> 
> Do you think it’d be possible to split out the idea of adding this new API to 
> XCTest from getting some tests for XCTest itself?
> 
> The reason I’m asking is that (like Foundation and dispatch), we’re trying to 
> keep the API surface of this XCTest very similar to the one that ships today 
> with Xcode. This will help developers who need to integrate their 
> cross-platform tests into suites that include features that Obj-C XCTest has 
> that we will probably not add to the Swift one (e.g., UI testing).
> 
> We made a concession to language limitations with the XCTMain function, 
> because there is no way to dynamically discover all of the test cases. I’d 
> really like to get rid of it in the long term in favor of something else; 
> maybe a decoration like @testable that we could find automatically.
> 
> - Tony
> 
>> These reporters are, for now, storied in a global array. In the future, I'd 
>> like to discuss moving XCTest to a model in which all tests are (optionally) 
>> run in sub-processes, each of which may (optionally) run in parallel. This 
>> global array most certainly won't work for such a change, but for now, I 
>> simply want to have regression tests on the project. It's hard to send pull 
>> requests without knowing everything still works!
>> 
>> Besides this approach, which modifies XCTest in order to test it, it may be 
>> more prudent to add tests *without* changing XCTest at all. To do so, I 
>> could add tests that run programs that call XCTMain(), then verify what's 
>> printed to stdout. This could be done using a Python script (which would go 
>> well with the build script, also in Python).
>> 
>> I'd love input on which of these approaches sounds more viable. Other ideas 
>> are also, of course, welcome!
>> 
>> - Brian Gesiak
> 
> 
> 
> _______________________________________________
> swift-corelibs-dev mailing list
> swift-corelibs-dev@swift.org
> https://lists.swift.org/mailman/listinfo/swift-corelibs-dev

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

Reply via email to