github.com/asifdxtreme/cli@v6.1.3-0.20150123051144-9ead8700b4ae+incompatible/testhelpers/commands/runner.go (about) 1 package commands 2 3 import ( 4 "github.com/cloudfoundry/cli/cf/command" 5 testreq "github.com/cloudfoundry/cli/testhelpers/requirements" 6 testterm "github.com/cloudfoundry/cli/testhelpers/terminal" 7 ) 8 9 type RunCommandResult int 10 11 const ( 12 RunCommandResultSuccess = iota 13 RunCommandResultFailed = iota 14 RunCommandResultRequirementsFailed = iota 15 ) 16 17 func RunCommand(cmd command.Command, args []string, requirementsFactory *testreq.FakeReqFactory) (passedRequirements bool) { 18 context := NewContext(cmd.Metadata().Name, args) 19 20 defer func() { 21 errMsg := recover() 22 23 if errMsg != nil && errMsg != testterm.QuietPanic { 24 panic(errMsg) 25 } 26 }() 27 28 requirements, err := cmd.GetRequirements(requirementsFactory, context) 29 if err != nil { 30 return 31 } 32 33 for _, requirement := range requirements { 34 success := requirement.Execute() 35 if !success { 36 return 37 } 38 } 39 40 passedRequirements = true 41 cmd.Run(context) 42 43 return 44 } 45 46 func RunCommandMoreBetter(cmd command.Command, requirementsFactory *testreq.FakeReqFactory, args ...string) (result RunCommandResult) { 47 defer func() { 48 errMsg := recover() 49 if errMsg == nil { 50 return 51 } 52 53 if errMsg != nil && errMsg != testterm.QuietPanic { 54 panic(errMsg) 55 } 56 57 result = RunCommandResultFailed 58 }() 59 60 context := NewContext(cmd.Metadata().Name, args) 61 requirements, err := cmd.GetRequirements(requirementsFactory, context) 62 if err != nil { 63 return RunCommandResultRequirementsFailed 64 } 65 66 for _, requirement := range requirements { 67 success := requirement.Execute() 68 if !success { 69 return RunCommandResultRequirementsFailed 70 } 71 } 72 73 cmd.Run(context) 74 75 return RunCommandResultSuccess 76 }