open-nomad/helper/flags/autopilot_flags_test.go

81 lines
1.5 KiB
Go

package flags
import (
"flag"
"testing"
"time"
"github.com/hashicorp/nomad/ci"
"github.com/stretchr/testify/require"
)
func TestFlagHelper_Pointers_Set(t *testing.T) {
ci.Parallel(t)
var (
B BoolValue
b bool = true
D DurationValue
d time.Duration = 2 * time.Minute
U UintValue
u uint = 99
)
flagSet := flag.NewFlagSet("test", flag.PanicOnError)
flagSet.Var(&B, "b", "bool")
flagSet.Var(&D, "d", "duration")
flagSet.Var(&U, "u", "uint")
args := []string{"-b", "false", "-d", "1m", "-u", "42"}
err := flagSet.Parse(args)
require.NoError(t, err)
require.Equal(t, "false", B.String())
B.Merge(&b)
require.Equal(t, false, b)
require.Equal(t, "1m0s", D.String())
D.Merge(&d)
require.Equal(t, 1*time.Minute, d)
require.Equal(t, "42", U.String())
U.Merge(&u)
require.Equal(t, uint(42), u)
}
func TestFlagHelper_Pointers_Ignored(t *testing.T) {
ci.Parallel(t)
var (
B BoolValue
b bool = true
D DurationValue
d time.Duration = 2 * time.Minute
U UintValue
u uint = 99
)
flagSet := flag.NewFlagSet("test", flag.PanicOnError)
flagSet.Var(&B, "b", "bool")
flagSet.Var(&D, "d", "duration")
flagSet.Var(&U, "u", "uint")
var args []string
err := flagSet.Parse(args)
require.NoError(t, err)
require.Equal(t, "false", B.String())
B.Merge(&b)
require.Equal(t, true, b)
require.Equal(t, "0s", D.String())
D.Merge(&d)
require.Equal(t, 2*time.Minute, d)
require.Equal(t, "0", U.String())
U.Merge(&u)
require.Equal(t, uint(99), u)
}