Emcee

Форк
0
/
DefaultDeveloperDirLocatorTests.swift 
56 строк · 2.2 Кб
1
import DeveloperDirLocator
2
import Foundation
3
import PathLib
4
import ProcessController
5
import ProcessControllerTestHelpers
6
import TestHelpers
7
import Tmp
8
import XCTest
9

10
final class DefaultDeveloperDirLocatorTests: XCTestCase {
11
    let currentDeveloperDirPath = AbsolutePath("/expected/path/to/developer/dir")
12
    
13
    lazy var processControllerProvider = FakeProcessControllerProvider() { subprocess -> ProcessController in
14
        XCTAssertEqual(
15
            try subprocess.arguments.map { try $0.stringValue() },
16
            ["/usr/bin/xcode-select", "-p"]
17
        )
18
        
19
        let processController = FakeProcessController(subprocess: subprocess)
20
        processController.onStart { _, unsubscribe in
21
            processController.broadcastStdout(data: Data(self.currentDeveloperDirPath.pathString.utf8))
22
            unsubscribe()
23
        }
24
        return processController
25
    }
26
    
27
    func test___current_developer_dir() throws {
28
        XCTAssertEqual(
29
            try DefaultDeveloperDirLocator(processControllerProvider: processControllerProvider).path(developerDir: .current),
30
            currentDeveloperDirPath
31
        )
32
    }
33
    
34
    func test___choosing_correct_xcode() throws {
35
        let tempFolder = try TemporaryFolder()
36
        try tempFolder.createFile(components: ["Xcode1021.app", "Contents"], filename: "Info.plist", contents: try plistData(bundleVersion: "10.2.1"))
37
        try tempFolder.createFile(components: ["Xcode101.app", "Contents"], filename: "Info.plist", contents: try plistData(bundleVersion: "10.1"))
38
        
39
        let result = try DefaultDeveloperDirLocator(
40
            processControllerProvider: processControllerProvider,
41
            xcodeAppContainerPath: tempFolder.absolutePath
42
        ).path(developerDir: .useXcode(CFBundleShortVersionString: "10.1"))
43
        XCTAssertEqual(
44
            result,
45
            tempFolder.pathWith(components: ["Xcode101.app", "Contents", "Developer"])
46
        )
47
    }
48
    
49
    private func plistData(bundleVersion: String) throws -> Data {
50
        let dict = [
51
            "CFBundleShortVersionString": bundleVersion,
52
            "CFBundleIdentifier": "com.apple.dt.Xcode"
53
        ]
54
        return try PropertyListSerialization.data(fromPropertyList: dict as NSDictionary, format: .xml, options: 0)
55
    }
56
}
57

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

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

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

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