Skip to content

Commit 39426e2

Browse files
committed
Add test
1 parent bdc6bbe commit 39426e2

File tree

1 file changed

+85
-0
lines changed

1 file changed

+85
-0
lines changed

utils/cliutils/utils_test.go

Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -140,3 +140,88 @@ func TestShouldCheckLatestCliVersion(t *testing.T) {
140140
assert.NoError(t, err)
141141
assert.True(t, shouldCheck)
142142
}
143+
144+
func TestExtractBoolFlagFromArgs(t *testing.T) {
145+
testCases := []struct {
146+
name string
147+
args []string
148+
flagName string
149+
expectedValue bool
150+
expectedErr bool
151+
expectedArgs []string
152+
}{
153+
{
154+
name: "Flag present as --flagName (implied true)",
155+
args: []string{"somecmd", "--flagName", "otherarg"},
156+
flagName: "flagName",
157+
expectedValue: true,
158+
expectedErr: false,
159+
expectedArgs: []string{"somecmd", "otherarg"},
160+
},
161+
{
162+
name: "Flag present as --flagName=true",
163+
args: []string{"somecmd", "--flagName=true", "otherarg"},
164+
flagName: "flagName",
165+
expectedValue: true,
166+
expectedErr: false,
167+
expectedArgs: []string{"somecmd", "otherarg"},
168+
},
169+
{
170+
name: "Flag present as --flagName=false",
171+
args: []string{"somecmd", "--flagName=false", "otherarg"},
172+
flagName: "flagName",
173+
expectedValue: false,
174+
expectedErr: false,
175+
expectedArgs: []string{"somecmd", "otherarg"},
176+
},
177+
{
178+
name: "Flag not present",
179+
args: []string{"somecmd", "otherarg"},
180+
flagName: "flagName",
181+
expectedValue: false,
182+
expectedErr: false,
183+
expectedArgs: []string{"somecmd", "otherarg"},
184+
},
185+
{
186+
name: "Flag present with invalid value",
187+
args: []string{"somecmd", "--flagName=invalid", "otherarg"},
188+
flagName: "flagName",
189+
expectedValue: false,
190+
expectedErr: true,
191+
expectedArgs: []string{"somecmd", "--flagName=invalid", "otherarg"},
192+
},
193+
{
194+
name: "Flag present as -flagName (should not be found)",
195+
args: []string{"somecmd", "-flagName", "otherarg"},
196+
flagName: "flagName",
197+
expectedValue: false,
198+
expectedErr: false,
199+
expectedArgs: []string{"somecmd", "-flagName", "otherarg"},
200+
},
201+
{
202+
name: "Flag present multiple times",
203+
args: []string{"somecmd", "--flagName", "--flagName=false", "otherarg"},
204+
flagName: "flagName",
205+
expectedValue: false,
206+
expectedErr: false,
207+
expectedArgs: []string{"somecmd", "--flagName=false", "otherarg"},
208+
},
209+
}
210+
211+
for _, tc := range testCases {
212+
t.Run(tc.name, func(t *testing.T) {
213+
// Make a copy to avoid modifying the original
214+
argsCopy := append([]string(nil), tc.args...)
215+
value, err := ExtractBoolFlagFromArgs(&argsCopy, tc.flagName)
216+
217+
if tc.expectedErr {
218+
assert.Error(t, err)
219+
} else {
220+
assert.NoError(t, err)
221+
}
222+
223+
assert.Equal(t, tc.expectedValue, value)
224+
assert.Equal(t, tc.expectedArgs, argsCopy)
225+
})
226+
}
227+
}

0 commit comments

Comments
 (0)