github.com/anth0d/nomad@v0.0.0-20221214183521-ae3a0a2cad06/helper/flags/autopilot_flags_test.go (about) 1 package flags 2 3 import ( 4 "flag" 5 "testing" 6 "time" 7 8 "github.com/hashicorp/nomad/ci" 9 "github.com/stretchr/testify/require" 10 ) 11 12 func TestFlagHelper_Pointers_Set(t *testing.T) { 13 ci.Parallel(t) 14 15 var ( 16 B BoolValue 17 b bool = true 18 19 D DurationValue 20 d time.Duration = 2 * time.Minute 21 22 U UintValue 23 u uint = 99 24 ) 25 flagSet := flag.NewFlagSet("test", flag.PanicOnError) 26 flagSet.Var(&B, "b", "bool") 27 flagSet.Var(&D, "d", "duration") 28 flagSet.Var(&U, "u", "uint") 29 30 args := []string{"-b", "false", "-d", "1m", "-u", "42"} 31 err := flagSet.Parse(args) 32 require.NoError(t, err) 33 34 require.Equal(t, "false", B.String()) 35 B.Merge(&b) 36 require.Equal(t, false, b) 37 38 require.Equal(t, "1m0s", D.String()) 39 D.Merge(&d) 40 require.Equal(t, 1*time.Minute, d) 41 42 require.Equal(t, "42", U.String()) 43 U.Merge(&u) 44 require.Equal(t, uint(42), u) 45 } 46 47 func TestFlagHelper_Pointers_Ignored(t *testing.T) { 48 ci.Parallel(t) 49 50 var ( 51 B BoolValue 52 b bool = true 53 54 D DurationValue 55 d time.Duration = 2 * time.Minute 56 57 U UintValue 58 u uint = 99 59 ) 60 flagSet := flag.NewFlagSet("test", flag.PanicOnError) 61 flagSet.Var(&B, "b", "bool") 62 flagSet.Var(&D, "d", "duration") 63 flagSet.Var(&U, "u", "uint") 64 65 var args []string 66 err := flagSet.Parse(args) 67 require.NoError(t, err) 68 69 require.Equal(t, "false", B.String()) 70 B.Merge(&b) 71 require.Equal(t, true, b) 72 73 require.Equal(t, "0s", D.String()) 74 D.Merge(&d) 75 require.Equal(t, 2*time.Minute, d) 76 77 require.Equal(t, "0", U.String()) 78 U.Merge(&u) 79 require.Equal(t, uint(99), u) 80 }