Emcee

Форк
0
/
AppleEventBusReportingTestRunnerStream.swift 
70 строк · 2.3 Кб
1
import AtomicModels
2
import CommonTestModels
3
import EventBus
4
import Foundation
5
import EmceeLogging
6
import RunnerModels
7

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]
14
    
15
    public init(
16
        entriesToRun: [TestEntry],
17
        eventBus: EventBus,
18
        logger: @escaping () -> ContextualLogger,
19
        testContext: AppleTestContext,
20
        resultsProvider: @escaping () -> [TestEntryResult]
21
    ) {
22
        self.entriesToRun = entriesToRun
23
        self.eventBus = eventBus
24
        self.logger = logger
25
        self.testContext = testContext
26
        self.resultsProvider = resultsProvider
27
    }
28
    
29
    public func openStream() {
30
        eventBus.post(
31
            event: .appleRunnerEvent(.willRun(testEntries: entriesToRun, testContext: testContext))
32
        )
33
    }
34
    
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)")
38
        }
39
        
40
        eventBus.post(
41
            event: .appleRunnerEvent(.testStarted(testEntry: testEntry, testContext: testContext))
42
        )
43
    }
44
    
45
    public func caughtException(testException: TestException) {}
46
    
47
    public func logCaptured(entry: TestLogEntry) {}
48
    
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)")
52
        }
53
        
54
        eventBus.post(
55
            event: .appleRunnerEvent(.testFinished(testEntry: testEntry, succeeded: testStoppedEvent.succeeded, testContext: testContext))
56
        )
57
    }
58
    
59
    public func closeStream() {
60
        eventBus.post(
61
            event: .appleRunnerEvent(.didRun(results: resultsProvider(), testContext: testContext))
62
        )
63
    }
64
    
65
    private func testEntryFor(testName: TestName) -> TestEntry? {
66
        return entriesToRun.first(where: { (testEntry: TestEntry) -> Bool in
67
            testEntry.testName == testName
68
        })
69
    }
70
}
71

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.