fix: fixed the BoolPtrValue in internal flag pkg
All checks were successful
Tests / test (pull_request) Successful in 16s
REUSE Compliance Check / check (push) Successful in 5s

- Fixed the BoolPtrValue type in the internal flag package by adding the
  IsBoolFlag() bool method to indicate to the command-line parser that
  the flag is a boolean flag.
- Added unit tests for the BoolPtrValue type.

PR: #56
This commit is contained in:
Dan Anglin 2024-08-20 00:47:55 +01:00
parent 61a00d7a5b
commit b558c5adff
Signed by: dananglin
GPG key ID: 0C1D44CFBEE68638
2 changed files with 67 additions and 0 deletions

View file

@ -34,3 +34,5 @@ func (b *BoolPtrValue) Set(value string) error {
return nil
}
func (b *BoolPtrValue) IsBoolFlag() bool { return true }

View file

@ -0,0 +1,65 @@
package flag_test
import (
"slices"
"testing"
internalFlag "codeflow.dananglin.me.uk/apollo/enbas/internal/flag"
)
func TestBoolPtrValue(t *testing.T) {
tests := []struct {
input string
want bool
}{
{
input: "True",
want: true,
},
{
input: "false",
want: false,
},
}
value := internalFlag.NewBoolPtrValue()
for _, test := range slices.All(tests) {
if err := value.Set(test.input); err != nil {
t.Fatalf(
"Unable to parse %s as a BoolPtrValue: %v",
test.input,
err,
)
}
got := *value.Value
if got != test.want {
t.Errorf(
"Unexpected bool parsed from %s: want %t, got %t",
test.input,
test.want,
got,
)
} else {
t.Logf(
"Expected bool parsed from %s: got %t",
test.input,
got,
)
}
}
}
func TestNilBoolPtrValue(t *testing.T) {
value := internalFlag.NewBoolPtrValue()
want := "NOT SET"
got := value.String()
if got != want {
t.Errorf("Unexpected string returned from the nil value; want %s, got %s", want, got)
} else {
t.Logf("Expected string returned from the nil value; got %s", got)
}
}