github.com/jaylevin/jenkins-library@v1.230.4/pkg/config/flags_test.go (about) 1 package config 2 3 import ( 4 "testing" 5 6 "github.com/spf13/cobra" 7 "github.com/stretchr/testify/assert" 8 ) 9 10 func TestAvailableFlagValues(t *testing.T) { 11 var f StepFilters 12 13 var test0 string 14 var test1 string 15 var test2 []string 16 var test3 bool 17 18 var c = &cobra.Command{ 19 Use: "test", 20 Short: "..", 21 } 22 23 c.Flags().StringVar(&test0, "test0", "val0", "Test 0") 24 c.Flags().StringVar(&test1, "test1", "", "Test 1") 25 c.Flags().StringSliceVar(&test2, "test2", []string{}, "Test 2") 26 c.Flags().BoolVar(&test3, "test3", false, "Test 3") 27 28 c.Flags().Set("test1", "val1") 29 c.Flags().Set("test2", "val3_1") 30 c.Flags().Set("test3", "true") 31 32 v := AvailableFlagValues(c, &f) 33 34 if v["test0"] != nil { 35 t.Errorf("expected: 'test0' to be empty but was %v", v["test0"]) 36 } 37 38 assert.Equal(t, "val1", v["test1"]) 39 assert.Equal(t, []string{"val3_1"}, v["test2"]) 40 assert.Equal(t, true, v["test3"]) 41 42 } 43 44 func TestMarkFlagsWithValue(t *testing.T) { 45 var test0 string 46 var test1 string 47 var test2 string 48 var c = &cobra.Command{ 49 Use: "test", 50 Short: "..", 51 } 52 c.Flags().StringVar(&test0, "test0", "val0", "Test 0") 53 c.Flags().StringVar(&test1, "test1", "", "Test 1") 54 c.Flags().StringVar(&test2, "test2", "", "Test 2") 55 56 s := StepConfig{ 57 Config: map[string]interface{}{ 58 "test2": "val2", 59 }, 60 } 61 62 MarkFlagsWithValue(c, s) 63 64 assert.Equal(t, true, c.Flags().Changed("test0"), "default not considered") 65 assert.Equal(t, false, c.Flags().Changed("test1"), "no value: considered as set") 66 assert.Equal(t, true, c.Flags().Changed("test2"), "config not considered") 67 }