github.com/gobuffalo/buffalo-cli/v2@v2.0.0-alpha.15.0.20200919213536-a7350c8e6799/cli/cmds/build/flags_test.go (about) 1 package build 2 3 import ( 4 "flag" 5 "testing" 6 7 "github.com/gobuffalo/buffalo-cli/v2/cli/cmds/build/buildtest" 8 "github.com/gobuffalo/plugins" 9 "github.com/spf13/pflag" 10 "github.com/stretchr/testify/require" 11 ) 12 13 type flagValue string 14 15 func (f flagValue) String() string { 16 return string(f) 17 } 18 19 func (f flagValue) Type() string { 20 return string(f) 21 } 22 23 func (f flagValue) Set(value string) error { 24 return nil 25 } 26 27 func Test_Cmd_Flags(t *testing.T) { 28 r := require.New(t) 29 30 var plugs plugins.Plugins 31 32 bc := &Cmd{ 33 pluginsFn: func() []plugins.Plugin { 34 return plugs 35 }, 36 } 37 38 flags := bc.Flags() 39 40 var values []*pflag.Flag 41 flags.VisitAll(func(f *pflag.Flag) { 42 values = append(values, f) 43 }) 44 45 count := len(values) 46 47 r.True(count > 0) 48 49 sflags := []*flag.Flag{ 50 { 51 Name: "my-flag", 52 DefValue: "unset", 53 Value: flagValue(""), 54 }, 55 } 56 plugs = append(plugs, buildtest.Flagger(sflags)) 57 58 bc = &Cmd{} 59 bc.WithPlugins(func() []plugins.Plugin { 60 return plugs 61 }) 62 flags = bc.Flags() 63 64 values = []*pflag.Flag{} 65 flags.VisitAll(func(f *pflag.Flag) { 66 values = append(values, f) 67 }) 68 r.Equal(count+1, len(values)) 69 70 count = len(values) 71 72 pflags := []*pflag.Flag{ 73 { 74 Name: "your-flag", 75 DefValue: "unset", 76 Value: flagValue(""), 77 }, 78 } 79 plugs = append(plugs, buildtest.Pflagger(pflags)) 80 81 bc = &Cmd{} 82 bc.WithPlugins(func() []plugins.Plugin { 83 return plugs 84 }) 85 flags = bc.Flags() 86 87 values = []*pflag.Flag{} 88 flags.VisitAll(func(f *pflag.Flag) { 89 values = append(values, f) 90 }) 91 r.Equal(count+1, len(values)) 92 }