CommandLineToolkit

Форк
0
/
ParsableCommandPathTests.swift 
53 строки · 1.8 Кб
1
import XCTest
2
import ArgumentParser
3

4
import CommandSupport
5

6
final class ParsableCommandPathTests: XCTestCase {
7

8
    struct RootCommand: ParsableCommand {
9
        static var configuration = CommandConfiguration(
10
            commandName: "root",
11
            subcommands: [SubCommandA.self, SubCommandB.self]
12
        )
13
    }
14

15
    struct SubCommandA: ParsableCommand {
16
        static var configuration = CommandConfiguration(
17
            commandName: "subA",
18
            subcommands: [SubSubCommandA1.self]
19
        )
20
    }
21

22
    struct SubSubCommandA1: ParsableCommand {
23
        static var configuration = CommandConfiguration(commandName: "subA1")
24
    }
25

26
    struct SubCommandB: ParsableCommand {
27
        static var configuration = CommandConfiguration(commandName: "subB")
28
    }
29

30
    func test___path___returns_correct_path___with_root_command_path() throws {
31
        let path = try RootCommand.path(fromRootCommand: RootCommand.self)
32
        XCTAssertEqual(path, "root")
33
    }
34

35
    func test___path___returns_correct_path___with_sub_command_path() throws {
36
        let path = try SubCommandA.path(fromRootCommand: RootCommand.self)
37
        XCTAssertEqual(path, "root subA")
38
    }
39

40
    func test___path___returns_correct_path___with_nested_sub_commands_path() throws {
41
        let path = try SubSubCommandA1.path(fromRootCommand: RootCommand.self)
42
        XCTAssertEqual(path, "root subA subA1")
43
    }
44

45
    func test___path___throws_commandNotFoundInTree___with_invalid_command_path() {
46
        XCTAssertThrowsError(try SubCommandA.path(fromRootCommand: SubCommandB.self)) { error in
47
            guard let pathError = error as? ParsableCommandPathError else {
48
                return XCTFail("Wrong error type")
49
            }
50
            XCTAssertEqual(pathError, .commandNotFoundInTree)
51
        }
52
    }
53
}
54

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

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

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

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