@@ -1043,15 +1043,6 @@ func TestParentBindings(t *testing.T) {
10431043 assert .Equal (t , "foo" , cli .Command .value )
10441044}
10451045
1046- func TestNumericParamErrors (t * testing.T ) {
1047- var cli struct {
1048- Name string
1049- }
1050- parser := mustNew (t , & cli )
1051- _ , err := parser .Parse ([]string {"--name" , "-10" })
1052- assert .EqualError (t , err , `--name: expected string value but got "-10" (short flag); perhaps try --name="-10"?` )
1053- }
1054-
10551046func TestDefaultValueIsHyphen (t * testing.T ) {
10561047 var cli struct {
10571048 Flag string `default:"-"`
@@ -2677,3 +2668,39 @@ func TestProviderWithoutError(t *testing.T) {
26772668 err = kctx .Run ()
26782669 assert .NoError (t , err )
26792670}
2671+
2672+ func TestParseHyphenParameter (t * testing.T ) {
2673+ type shortFlag struct {
2674+ Flag string `short:"f"`
2675+ Other string `short:"o"`
2676+ Numeric int `short:"n"`
2677+ }
2678+
2679+ t .Run ("ShortFlag" , func (t * testing.T ) {
2680+ actual := & shortFlag {}
2681+ _ , err := mustNew (t , actual , kong .WithHyphenPrefixedParameters (true )).Parse ([]string {"-f" , "-foo" })
2682+ assert .NoError (t , err )
2683+ assert .Equal (t , & shortFlag {Flag : "-foo" }, actual )
2684+ })
2685+
2686+ t .Run ("LongFlag" , func (t * testing.T ) {
2687+ actual := & shortFlag {}
2688+ _ , err := mustNew (t , actual , kong .WithHyphenPrefixedParameters (true )).Parse ([]string {"--flag" , "-foo" })
2689+ assert .NoError (t , err )
2690+ assert .Equal (t , & shortFlag {Flag : "-foo" }, actual )
2691+ })
2692+
2693+ t .Run ("ParamMatchesFlag" , func (t * testing.T ) {
2694+ actual := & shortFlag {}
2695+ _ , err := mustNew (t , actual , kong .WithHyphenPrefixedParameters (true )).Parse ([]string {"--flag" , "-oo" })
2696+ assert .NoError (t , err )
2697+ assert .Equal (t , & shortFlag {Flag : "-oo" }, actual )
2698+ })
2699+
2700+ t .Run ("NegativeNumber" , func (t * testing.T ) {
2701+ actual := & shortFlag {}
2702+ _ , err := mustNew (t , actual , kong .WithHyphenPrefixedParameters (true )).Parse ([]string {"--numeric" , "-10" })
2703+ assert .NoError (t , err )
2704+ assert .Equal (t , & shortFlag {Numeric : - 10 }, actual )
2705+ })
2706+ }
0 commit comments