@@ -16,6 +16,21 @@ import ArgumentParserTestHelpers
1616final class HelpGenerationTests : XCTestCase {
1717}
1818
19+ extension URL : ExpressibleByArgument {
20+ public init ? ( argument: String ) {
21+ guard let url = URL ( string: argument) else {
22+ return nil
23+ }
24+ self = url
25+ }
26+
27+ public var defaultValueDescription : String {
28+ self . absoluteString == FileManager . default. currentDirectoryPath
29+ ? " current directory "
30+ : String ( describing: self )
31+ }
32+ }
33+
1934// MARK: -
2035
2136extension HelpGenerationTests {
@@ -117,6 +132,7 @@ extension HelpGenerationTests {
117132 }
118133 }
119134
135+
120136 struct D : ParsableCommand {
121137 @Argument ( default: " -- " , help: " Your occupation. " )
122138 var occupation : String
@@ -138,11 +154,14 @@ extension HelpGenerationTests {
138154
139155 @Option ( default: . bachelor, help: " Your degree. " , transform: Degree . degreeTransform)
140156 var degree : Degree
157+
158+ @Option ( default: URL ( string: FileManager . default. currentDirectoryPath) !, help: " Directory. " )
159+ var directory : URL
141160 }
142161
143162 func testHelpWithDefaultValues( ) {
144163 AssertHelp ( for: D . self, equals: """
145- USAGE: d [<occupation>] [--name <name>] [--middle-name <middle-name>] [--age <age>] [--logging <logging>] [--optional] [--required] [--degree <degree>]
164+ USAGE: d [<occupation>] [--name <name>] [--middle-name <middle-name>] [--age <age>] [--logging <logging>] [--optional] [--required] [--degree <degree>] [--directory <directory>]
146165
147166 ARGUMENTS:
148167 <occupation> Your occupation. (default: --)
@@ -155,6 +174,7 @@ extension HelpGenerationTests {
155174 --logging <logging> Whether logging is enabled. (default: false)
156175 --optional/--required Vegan diet. (default: optional)
157176 --degree <degree> Your degree. (default: bachelor)
177+ --directory <directory> Directory. (default: current directory)
158178 -h, --help Show help information.
159179
160180 """ )
0 commit comments