CommandLineToolkit
53 строки · 1.8 Кб
1import XCTest
2import ArgumentParser
3
4import CommandSupport
5
6final class ParsableCommandPathTests: XCTestCase {
7
8struct RootCommand: ParsableCommand {
9static var configuration = CommandConfiguration(
10commandName: "root",
11subcommands: [SubCommandA.self, SubCommandB.self]
12)
13}
14
15struct SubCommandA: ParsableCommand {
16static var configuration = CommandConfiguration(
17commandName: "subA",
18subcommands: [SubSubCommandA1.self]
19)
20}
21
22struct SubSubCommandA1: ParsableCommand {
23static var configuration = CommandConfiguration(commandName: "subA1")
24}
25
26struct SubCommandB: ParsableCommand {
27static var configuration = CommandConfiguration(commandName: "subB")
28}
29
30func test___path___returns_correct_path___with_root_command_path() throws {
31let path = try RootCommand.path(fromRootCommand: RootCommand.self)
32XCTAssertEqual(path, "root")
33}
34
35func test___path___returns_correct_path___with_sub_command_path() throws {
36let path = try SubCommandA.path(fromRootCommand: RootCommand.self)
37XCTAssertEqual(path, "root subA")
38}
39
40func test___path___returns_correct_path___with_nested_sub_commands_path() throws {
41let path = try SubSubCommandA1.path(fromRootCommand: RootCommand.self)
42XCTAssertEqual(path, "root subA subA1")
43}
44
45func test___path___throws_commandNotFoundInTree___with_invalid_command_path() {
46XCTAssertThrowsError(try SubCommandA.path(fromRootCommand: SubCommandB.self)) { error in
47guard let pathError = error as? ParsableCommandPathError else {
48return XCTFail("Wrong error type")
49}
50XCTAssertEqual(pathError, .commandNotFoundInTree)
51}
52}
53}
54