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  }