github.com/DaAlbrecht/cf-cli@v0.0.0-20231128151943-1fe19bb400b9/util/command_parser/command_parser_test.go (about)

     1  package command_parser_test
     2  
     3  import (
     4  	"code.cloudfoundry.org/cli/command/common"
     5  	"code.cloudfoundry.org/cli/util/command_parser"
     6  	"code.cloudfoundry.org/cli/util/configv3"
     7  	"code.cloudfoundry.org/cli/util/ui"
     8  	. "github.com/onsi/ginkgo"
     9  	. "github.com/onsi/gomega"
    10  	"io/ioutil"
    11  )
    12  
    13  var _ = Describe("Command 'Parser'", func() {
    14  	var (
    15  		pluginUI *ui.UI
    16  		v3Config *configv3.Config
    17  	)
    18  	BeforeEach(func() {
    19  		var err error
    20  		v3Config = new(configv3.Config)
    21  		pluginUI, err = ui.NewPluginUI(v3Config, ioutil.Discard, ioutil.Discard)
    22  		Expect(err).ToNot(HaveOccurred())
    23  	})
    24  
    25  	Describe("unknown command handling", func() {
    26  		var (
    27  			exitCode int
    28  			err      error
    29  		)
    30  
    31  		BeforeEach(func() {
    32  			parser, newErr := command_parser.NewCommandParser(v3Config)
    33  			Expect(newErr).ToNot(HaveOccurred())
    34  			exitCode, err = parser.ParseCommandFromArgs(pluginUI, []string{"howdy"})
    35  		})
    36  
    37  		It("returns an unknown command error with the command name", func() {
    38  			unknownCommandErr := err.(command_parser.UnknownCommandError)
    39  			Expect(unknownCommandErr.CommandName).To(Equal("howdy"))
    40  			Expect(exitCode).To(Equal(0))
    41  		})
    42  	})
    43  
    44  	Describe("the verbose flag", func() {
    45  		var parser command_parser.CommandParser
    46  
    47  		BeforeEach(func() {
    48  			// Needed because the command-table is a singleton
    49  			// and the absence of -v relies on the default value of
    50  			// common.Commands.VerboseOrVersion to be false
    51  			common.Commands.VerboseOrVersion = false
    52  			var err error
    53  
    54  			parser, err = command_parser.NewCommandParser(v3Config)
    55  			Expect(err).ToNot(HaveOccurred())
    56  		})
    57  
    58  		It("sets the verbose/version flag", func() {
    59  			exitCode, err := parser.ParseCommandFromArgs(pluginUI, []string{"-v", "help"})
    60  			Expect(exitCode).To(Equal(0))
    61  			Expect(err).ToNot(HaveOccurred())
    62  			Expect(parser.Config.Flags).To(Equal(configv3.FlagOverride{Verbose: true}))
    63  		})
    64  
    65  		It("sets the verbose/version flag after the command-name", func() {
    66  			exitCode, err := parser.ParseCommandFromArgs(pluginUI, []string{"help", "-v"})
    67  			Expect(exitCode).To(Equal(0))
    68  			Expect(err).ToNot(HaveOccurred())
    69  			Expect(parser.Config.Flags).To(Equal(configv3.FlagOverride{Verbose: true}))
    70  		})
    71  
    72  		It("doesn't turn verbose on by default", func() {
    73  			exitCode, err := parser.ParseCommandFromArgs(pluginUI, []string{"help"})
    74  			Expect(exitCode).To(Equal(0))
    75  			Expect(err).ToNot(HaveOccurred())
    76  			Expect(parser.Config.Flags).To(Equal(configv3.FlagOverride{Verbose: false}))
    77  		})
    78  
    79  	})
    80  })