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