Skip to content

Commit 91ed11d

Browse files
committed
Add more tests to improve code coverage
1 parent f0b9399 commit 91ed11d

File tree

5 files changed

+66
-14
lines changed

5 files changed

+66
-14
lines changed

args.go

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -180,12 +180,10 @@ func (a *ArgumentsBase[T, C, VC]) Usage() string {
180180
func (a *ArgumentsBase[T, C, VC]) Parse(s []string) ([]string, error) {
181181
tracef("calling arg%[1] parse with args %[2]", &a.Name, s)
182182
if a.Max == 0 {
183-
fmt.Printf("WARNING args %s has max 0, not parsing argument\n", a.Name)
184-
return s, nil
183+
return s, fmt.Errorf("args %s has max 0, not parsing argument", a.Name)
185184
}
186185
if a.Max != -1 && a.Min > a.Max {
187-
fmt.Printf("WARNING args %s has min[%d] > max[%d], not parsing argument\n", a.Name, a.Min, a.Max)
188-
return s, nil
186+
return s, fmt.Errorf("args %s has min[%d] > max[%d], not parsing argument", a.Name, a.Min, a.Max)
189187
}
190188

191189
count := 0

args_test.go

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,34 @@ func TestArgNotSet(t *testing.T) {
1717
require.Equal(t, "foo", arg.Get())
1818
}
1919

20+
func TestArgsMaxNotSet(t *testing.T) {
21+
arg := &StringArgs{
22+
Name: "sa",
23+
Value: "foo",
24+
}
25+
26+
cmd := buildMinimalTestCommand()
27+
cmd.Arguments = []Argument{arg}
28+
29+
err := cmd.Run(buildTestContext(t), []string{"foo", "bar"})
30+
require.ErrorContains(t, err, "args sa has max 0, not parsing argument")
31+
}
32+
33+
func TestArgsMinGtMax(t *testing.T) {
34+
arg := &StringArgs{
35+
Name: "sa",
36+
Value: "foo",
37+
Min: 2,
38+
Max: 1,
39+
}
40+
41+
cmd := buildMinimalTestCommand()
42+
cmd.Arguments = []Argument{arg}
43+
44+
err := cmd.Run(buildTestContext(t), []string{"foo", "bar"})
45+
require.ErrorContains(t, err, "args sa has min[2] > max[1], not parsing argument")
46+
}
47+
2048
func TestArgsFloatTypes(t *testing.T) {
2149
cmd := buildMinimalTestCommand()
2250
var fval float64

errors.go

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -150,12 +150,10 @@ func HandleExitCoder(err error) {
150150
}
151151

152152
if exitErr, ok := err.(ExitCoder); ok {
153-
if err.Error() != "" {
154-
if _, ok := exitErr.(ErrorFormatter); ok {
155-
_, _ = fmt.Fprintf(ErrWriter, "%+v\n", err)
156-
} else {
157-
_, _ = fmt.Fprintln(ErrWriter, err)
158-
}
153+
if _, ok := exitErr.(ErrorFormatter); ok {
154+
_, _ = fmt.Fprintf(ErrWriter, "%+v\n", err)
155+
} else {
156+
_, _ = fmt.Fprintln(ErrWriter, err)
159157
}
160158
OsExiter(exitErr.ExitCode())
161159
return

flag_bool.go

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,3 @@ func (b *boolValue) String() string {
7676
}
7777

7878
func (b *boolValue) IsBoolFlag() bool { return true }
79-
80-
func (b *boolValue) Count() int {
81-
return *b.count
82-
}

flag_test.go

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3269,6 +3269,26 @@ func TestZeroValueMutexFlag(t *testing.T) {
32693269
assert.NoError(t, fl.check(&Command{}))
32703270
}
32713271

3272+
func TestMutexFlagCategory(t *testing.T) {
3273+
cmd := buildMinimalTestCommand()
3274+
cmd.Category = "TestCmd"
3275+
cmd.MutuallyExclusiveFlags = []MutuallyExclusiveFlags{
3276+
{
3277+
Flags: [][]Flag{
3278+
{
3279+
&StringFlag{Name: "foo", Category: "Group1"},
3280+
&IntFlag{Name: "bar", Category: "Group1"},
3281+
},
3282+
{
3283+
&StringFlag{Name: "baz", Category: "Group2"},
3284+
},
3285+
},
3286+
},
3287+
}
3288+
3289+
assert.NoError(t, cmd.Run(buildTestContext(t), []string{"", "--foo", "value"}))
3290+
}
3291+
32723292
func TestExtFlag(t *testing.T) {
32733293
var iv intValue[int64]
32743294
var ipv int64
@@ -3467,3 +3487,15 @@ func TestGenericValue(t *testing.T) {
34673487
assert.Nil(t, g.Get())
34683488
assert.Empty(t, g.String())
34693489
}
3490+
3491+
func TestEndValue(t *testing.T) {
3492+
cmd := buildMinimalTestCommand()
3493+
cmd.UseShortOptionHandling = true
3494+
cmd.Flags = []Flag{
3495+
&IntFlag{Name: "debug", Aliases: []string{"d"}},
3496+
&IntFlag{Name: "count", Aliases: []string{"c"}},
3497+
}
3498+
3499+
assert.Error(t, cmd.Run(buildTestContext(t), []string{"foo", "-cd="}))
3500+
assert.Error(t, cmd.Run(buildTestContext(t), []string{"foo", "-cd=s"}))
3501+
}

0 commit comments

Comments
 (0)