Emcee
47 строк · 1.2 Кб
1import DateProvider
2import EventBus
3import FileSystem
4import Foundation
5import Plugin
6
7class Listener: DefaultBusListener {
8var allEvents = [AppleRunnerEvent]()
9
10override func runnerEvent(_ event: AppleRunnerEvent) {
11allEvents.append(event)
12}
13
14override func tearDown() {
15write()
16}
17
18private func write() {
19for event in allEvents {
20do {
21guard let outputPath = event.testContext.environment["EMCEE_TEST_PLUGIN_OUTPUT"] else {
22print("Error: TestingPlugin requires runner events to specify env.EMCEE_TEST_PLUGIN_OUTPUT")
23exit(1)
24}
25let encoder = JSONEncoder()
26let data = try encoder.encode(event)
27try data.write(to: URL(fileURLWithPath: outputPath), options: .atomicWrite)
28} catch {
29print("Error: \(error)")
30}
31}
32}
33}
34
35func main() throws -> Int32 {
36let eventBus = EventBus()
37let listener = Listener()
38eventBus.add(stream: listener)
39
40let plugin = try Plugin(eventBus: eventBus)
41plugin.streamPluginEvents()
42plugin.join()
43
44return 0
45}
46
47exit(try main())
48