@@ -15,6 +15,17 @@ import XCTest
15
15
final class UsageGenerationTests : XCTestCase {
16
16
}
17
17
18
+ func _testSynopsis< T: ParsableArguments > (
19
+ _ type: T . Type ,
20
+ visibility: ArgumentVisibility = . default,
21
+ expected: String ,
22
+ file: StaticString = #file,
23
+ line: UInt = #line
24
+ ) {
25
+ let help = UsageGenerator ( toolName: " example " , parsable: T ( ) , visibility: visibility)
26
+ XCTAssertEqual ( help. synopsis, expected, file: file, line: line)
27
+ }
28
+
18
29
// MARK: -
19
30
20
31
extension UsageGenerationTests {
@@ -32,8 +43,7 @@ extension UsageGenerationTests {
32
43
}
33
44
34
45
func testSynopsis( ) {
35
- let help = UsageGenerator ( toolName: " bar " , parsable: A ( ) )
36
- XCTAssertEqual ( help. synopsis, " bar --first-name <first-name> --title <title> " )
46
+ _testSynopsis ( A . self, expected: " example --first-name <first-name> --title <title> " )
37
47
}
38
48
39
49
struct B : ParsableArguments {
@@ -42,8 +52,7 @@ extension UsageGenerationTests {
42
52
}
43
53
44
54
func testSynopsisWithOptional( ) {
45
- let help = UsageGenerator ( toolName: " bar " , parsable: B ( ) )
46
- XCTAssertEqual ( help. synopsis, " bar [--first-name <first-name>] [--title <title>] " )
55
+ _testSynopsis ( B . self, expected: " example [--first-name <first-name>] [--title <title>] " )
47
56
}
48
57
49
58
struct C : ParsableArguments {
@@ -52,8 +61,7 @@ extension UsageGenerationTests {
52
61
}
53
62
54
63
func testFlagSynopsis( ) {
55
- let help = UsageGenerator ( toolName: " bar " , parsable: C ( ) )
56
- XCTAssertEqual ( help. synopsis, " bar [--log] [--verbose ...] " )
64
+ _testSynopsis ( C . self, expected: " example [--log] [--verbose ...] " )
57
65
}
58
66
59
67
struct D : ParsableArguments {
@@ -62,8 +70,7 @@ extension UsageGenerationTests {
62
70
}
63
71
64
72
func testPositionalSynopsis( ) {
65
- let help = UsageGenerator ( toolName: " bar " , parsable: D ( ) )
66
- XCTAssertEqual ( help. synopsis, " bar <first-name> [<title>] " )
73
+ _testSynopsis ( D . self, expected: " example <first-name> [<title>] " )
67
74
}
68
75
69
76
struct E : ParsableArguments {
@@ -78,8 +85,7 @@ extension UsageGenerationTests {
78
85
}
79
86
80
87
func testSynopsisWithDefaults( ) {
81
- let help = UsageGenerator ( toolName: " bar " , parsable: E ( ) )
82
- XCTAssertEqual ( help. synopsis, " bar [--name <name>] [--count <count>] [<arg>] " )
88
+ _testSynopsis ( E . self, expected: " example [--name <name>] [--count <count>] [<arg>] " )
83
89
}
84
90
85
91
struct F : ParsableArguments {
@@ -88,8 +94,7 @@ extension UsageGenerationTests {
88
94
}
89
95
90
96
func testSynopsisWithRepeats( ) {
91
- let help = UsageGenerator ( toolName: " bar " , parsable: F ( ) )
92
- XCTAssertEqual ( help. synopsis, " bar [--name <name> ...] [<name-counts> ...] " )
97
+ _testSynopsis ( F . self, expected: " example [--name <name> ...] [<name-counts> ...] " )
93
98
}
94
99
95
100
struct G : ParsableArguments {
@@ -101,8 +106,7 @@ extension UsageGenerationTests {
101
106
}
102
107
103
108
func testSynopsisWithCustomization( ) {
104
- let help = UsageGenerator ( toolName: " bar " , parsable: G ( ) )
105
- XCTAssertEqual ( help. synopsis, " bar [--file-path <path>] <user-home-path> " )
109
+ _testSynopsis ( G . self, expected: " example [--file-path <path>] <user-home-path> " )
106
110
}
107
111
108
112
struct H : ParsableArguments {
@@ -111,8 +115,8 @@ extension UsageGenerationTests {
111
115
}
112
116
113
117
func testSynopsisWithHidden( ) {
114
- let help = UsageGenerator ( toolName : " bar " , parsable : H ( ) )
115
- XCTAssertEqual ( help . synopsis , " bar " )
118
+ _testSynopsis ( H . self , expected : " example " )
119
+ _testSynopsis ( H . self , visibility : . hidden , expected : " example [--first-name <first-name>] [<title>] " )
116
120
}
117
121
118
122
struct I : ParsableArguments {
@@ -135,8 +139,7 @@ extension UsageGenerationTests {
135
139
}
136
140
137
141
func testSynopsisWithDefaultValueAndTransform( ) {
138
- let help = UsageGenerator ( toolName: " bar " , parsable: I ( ) )
139
- XCTAssertEqual ( help. synopsis, " bar [--color <color>] " )
142
+ _testSynopsis ( I . self, expected: " example [--color <color>] " )
140
143
}
141
144
142
145
struct J : ParsableArguments {
@@ -146,8 +149,7 @@ extension UsageGenerationTests {
146
149
}
147
150
148
151
func testSynopsisWithTransform( ) {
149
- let help = UsageGenerator ( toolName: " bar " , parsable: J ( ) )
150
- XCTAssertEqual ( help. synopsis, " bar --req <req> [--opt <opt>] " )
152
+ _testSynopsis ( J . self, expected: " example --req <req> [--opt <opt>] " )
151
153
}
152
154
153
155
struct K : ParsableArguments {
@@ -158,8 +160,7 @@ extension UsageGenerationTests {
158
160
}
159
161
160
162
func testSynopsisWithMultipleCustomNames( ) {
161
- let help = UsageGenerator ( toolName: " bar " , parsable: K ( ) )
162
- XCTAssertEqual ( help. synopsis, " bar [--remote <remote>] " )
163
+ _testSynopsis ( K . self, expected: " example [--remote <remote>] " )
163
164
}
164
165
165
166
struct L : ParsableArguments {
@@ -170,8 +171,7 @@ extension UsageGenerationTests {
170
171
}
171
172
172
173
func testSynopsisWithSingleDashLongNameFirst( ) {
173
- let help = UsageGenerator ( toolName: " bar " , parsable: L ( ) )
174
- XCTAssertEqual ( help. synopsis, " bar [-remote <remote>] " )
174
+ _testSynopsis ( L . self, expected: " example [-remote <remote>] " )
175
175
}
176
176
177
177
struct M : ParsableArguments {
@@ -193,8 +193,18 @@ extension UsageGenerationTests {
193
193
}
194
194
195
195
func testSynopsisWithTooManyOptions( ) {
196
- let help = UsageGenerator ( toolName: " foo " , parsable: M ( ) )
197
- XCTAssertEqual ( help. synopsis,
198
- " foo [<options>] --option <option> <input> [<output>] " )
196
+ _testSynopsis ( M . self, expected: " example [<options>] --option <option> <input> [<output>] " )
197
+ }
198
+
199
+ struct N : ParsableArguments {
200
+ @Flag var a : Bool = false
201
+ @Flag var b : Bool = false
202
+ var title = " defaulted value "
203
+ var decode = false
204
+ }
205
+
206
+ func testNonwrappedValues( ) {
207
+ _testSynopsis ( N . self, expected: " example [--a] [--b] " )
208
+ _testSynopsis ( N . self, visibility: . hidden, expected: " example [--a] [--b] " )
199
209
}
200
210
}
0 commit comments