CommandLineToolkit
42 строки · 1.5 Кб
1import Foundation
2import PathLib
3import ProcessController
4import ProcessControllerTestHelpers
5import TestHelpers
6import Tmp
7import XCTest
8
9final class LoggableProcessControllerProviderTests: XCTestCase {
10lazy var processControllerProvider = FakeProcessControllerProvider()
11lazy var tempFolder = assertDoesNotThrow { try TemporaryFolder() }
12
13func test() throws {
14let stdoutFilePath = try tempFolder.createFile(filename: "stdout")
15let stderrFilePath = try tempFolder.createFile(filename: "stderr")
16
17let loggableProvider = LoggableProcessControllerProvider(
18pathProvider: { _ -> (stdout: AbsolutePath, stderr: AbsolutePath) in
19(stdout: stdoutFilePath, stderr: stderrFilePath)
20},
21provider: processControllerProvider
22)
23
24let processController = try loggableProvider.createProcessController(
25subprocess: Subprocess(arguments: ["/usr/bin/env"])
26)
27let fakeProcessController: FakeProcessController = assertCast { processController }
28
29fakeProcessController.broadcastStdout(data: Data("stdout".utf8))
30fakeProcessController.broadcastStderr(data: Data("stderr".utf8))
31
32XCTAssertEqual(
33try String(contentsOfFile: stdoutFilePath.pathString),
34"stdout"
35)
36
37XCTAssertEqual(
38try String(contentsOfFile: stderrFilePath.pathString),
39"stderr"
40)
41}
42}
43