@@ -15,7 +15,11 @@ object CoreBase {
1515 i : Int ,
1616 @ arg(doc = " Pass in a custom `s` to override it" )
1717 s : String = " lols"
18- ) = s * i
18+ )
19+ = s * i
20+ @ main
21+ def baz (arg : Int ) = arg
22+
1923 @ main
2024 def ex () = throw MyException
2125
@@ -44,7 +48,10 @@ class CoreTests(allowPositional: Boolean) extends TestSuite {
4448 | qux
4549 | Qux is a function that does stuff
4650 | -i <int>
47- | -s <str> Pass in a custom `s` to override it
51+ | -s <str> Pass in a custom `s` to override it
52+ |
53+ | baz
54+ | --arg <int>
4855 |
4956 | ex
5057 |""" .stripMargin
@@ -56,27 +63,31 @@ class CoreTests(allowPositional: Boolean) extends TestSuite {
5663
5764 assert(
5865 names ==
59- List (" foo" , " bar" , " qux" , " ex" )
66+ List (" foo" , " bar" , " qux" , " baz " , " ex" )
6067 )
6168 val evaledArgs = check.mains.value.map(_.flattenedArgSigs.map {
62- case (ArgSig (name, s, docs, None , parser, _, _), _) => (s, docs, None , parser)
69+ case (ArgSig (name, s, docs, None , parser, _, _), _) => (name, s, docs, None , parser)
6370 case (ArgSig (name, s, docs, Some (default), parser, _, _), _) =>
64- (s, docs, Some (default(CoreBase )), parser)
71+ (name, s, docs, Some (default(CoreBase )), parser)
6572 })
6673
6774 assert(
6875 evaledArgs == List (
6976 List (),
70- List ((Some ('i' ), None , None , TokensReader .IntRead )),
77+ List ((None , Some ('i' ), None , None , TokensReader .IntRead )),
7178 List (
72- (Some ('i' ), None , None , TokensReader .IntRead ),
79+ (None , Some ('i' ), None , None , TokensReader .IntRead ),
7380 (
81+ None ,
7482 Some ('s' ),
7583 Some (" Pass in a custom `s` to override it" ),
7684 Some (" lols" ),
7785 TokensReader .StringRead
7886 )
7987 ),
88+ List (
89+ (Some (" arg" ), None , None , None , TokensReader .IntRead ),
90+ ),
8091 List ()
8192 )
8293 )
@@ -127,6 +138,26 @@ class CoreTests(allowPositional: Boolean) extends TestSuite {
127138 None
128139 ) =>
129140 }
141+ test(" incomplete" ) {
142+ // Make sure both long args and short args properly report
143+ // incomplete arguments as distinct from other mismatches
144+ test - assertMatch(check.parseInvoke(List (" qux" , " -s" ))) {
145+ case Result .Failure .MismatchedArguments (
146+ Nil ,
147+ Nil ,
148+ Nil ,
149+ Some (_)
150+ ) =>
151+ }
152+ test - assertMatch(check.parseInvoke(List (" baz" , " --arg" ))) {
153+ case Result .Failure .MismatchedArguments (
154+ Nil ,
155+ Nil ,
156+ Nil ,
157+ Some (_)
158+ ) =>
159+ }
160+ }
130161 }
131162
132163 test(" tooManyParams" ) - check(
0 commit comments