8
public final class AppleEventBusReportingTestRunnerStream: TestRunnerStream {
9
private let entriesToRun: [TestEntry]
10
private let eventBus: EventBus
11
private let logger: () -> ContextualLogger
12
private let testContext: AppleTestContext
13
private let resultsProvider: () -> [TestEntryResult]
16
entriesToRun: [TestEntry],
18
logger: @escaping () -> ContextualLogger,
19
testContext: AppleTestContext,
20
resultsProvider: @escaping () -> [TestEntryResult]
22
self.entriesToRun = entriesToRun
23
self.eventBus = eventBus
25
self.testContext = testContext
26
self.resultsProvider = resultsProvider
29
public func openStream() {
31
event: .appleRunnerEvent(.willRun(testEntries: entriesToRun, testContext: testContext))
35
public func testStarted(testName: TestName) {
36
guard let testEntry = testEntryFor(testName: testName) else {
37
return logger().warning("Can't find test entry for test \(testName)")
41
event: .appleRunnerEvent(.testStarted(testEntry: testEntry, testContext: testContext))
45
public func caughtException(testException: TestException) {}
47
public func logCaptured(entry: TestLogEntry) {}
49
public func testStopped(testStoppedEvent: TestStoppedEvent) {
50
guard let testEntry = testEntryFor(testName: testStoppedEvent.testName) else {
51
return logger().warning("Can't find test entry for test \(testStoppedEvent.testName)")
55
event: .appleRunnerEvent(.testFinished(testEntry: testEntry, succeeded: testStoppedEvent.succeeded, testContext: testContext))
59
public func closeStream() {
61
event: .appleRunnerEvent(.didRun(results: resultsProvider(), testContext: testContext))
65
private func testEntryFor(testName: TestName) -> TestEntry? {
66
return entriesToRun.first(where: { (testEntry: TestEntry) -> Bool in
67
testEntry.testName == testName