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 })