@@ -15,7 +15,11 @@ object CoreBase {
15
15
i : Int ,
16
16
@ arg(doc = " Pass in a custom `s` to override it" )
17
17
s : String = " lols"
18
- ) = s * i
18
+ )
19
+ = s * i
20
+ @ main
21
+ def baz (arg : Int ) = arg
22
+
19
23
@ main
20
24
def ex () = throw MyException
21
25
@@ -44,7 +48,10 @@ class CoreTests(allowPositional: Boolean) extends TestSuite {
44
48
| qux
45
49
| Qux is a function that does stuff
46
50
| -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>
48
55
|
49
56
| ex
50
57
|""" .stripMargin
@@ -56,27 +63,31 @@ class CoreTests(allowPositional: Boolean) extends TestSuite {
56
63
57
64
assert(
58
65
names ==
59
- List (" foo" , " bar" , " qux" , " ex" )
66
+ List (" foo" , " bar" , " qux" , " baz " , " ex" )
60
67
)
61
68
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)
63
70
case (ArgSig (name, s, docs, Some (default), parser, _, _), _) =>
64
- (s, docs, Some (default(CoreBase )), parser)
71
+ (name, s, docs, Some (default(CoreBase )), parser)
65
72
})
66
73
67
74
assert(
68
75
evaledArgs == List (
69
76
List (),
70
- List ((Some ('i' ), None , None , TokensReader .IntRead )),
77
+ List ((None , Some ('i' ), None , None , TokensReader .IntRead )),
71
78
List (
72
- (Some ('i' ), None , None , TokensReader .IntRead ),
79
+ (None , Some ('i' ), None , None , TokensReader .IntRead ),
73
80
(
81
+ None ,
74
82
Some ('s' ),
75
83
Some (" Pass in a custom `s` to override it" ),
76
84
Some (" lols" ),
77
85
TokensReader .StringRead
78
86
)
79
87
),
88
+ List (
89
+ (Some (" arg" ), None , None , None , TokensReader .IntRead ),
90
+ ),
80
91
List ()
81
92
)
82
93
)
@@ -127,6 +138,26 @@ class CoreTests(allowPositional: Boolean) extends TestSuite {
127
138
None
128
139
) =>
129
140
}
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
+ }
130
161
}
131
162
132
163
test(" tooManyParams" ) - check(
0 commit comments