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) }