Better testing support. Easy to reset to blank slate in tests.

This commit is contained in:
spf13 2013-09-04 11:25:32 -04:00
parent a618569eea
commit c568b575aa
2 changed files with 13 additions and 5 deletions

View file

@ -150,6 +150,11 @@ func (c *Command) execute(args []string) (err error) {
return err
}
// Used for testing
func (c *Command) ResetCommands() {
c.commands = nil
}
// Add one or many commands as children of this
func (c *Command) AddCommand(cmds ...*Command) {
for i, x := range cmds {

View file

@ -57,11 +57,18 @@ func flagInit() {
cmdPrint.Flags().BoolVarP(&flagb3, "boolthree", "b", true, "help message for flag boolthree")
}
func commandInit() {
cmdEcho.ResetCommands()
cmdPrint.ResetCommands()
cmdTimes.ResetCommands()
}
func initialize() *Commander {
tt, tp, te = nil, nil, nil
var c = NewCommander()
c.SetName("cobra test")
flagInit()
commandInit()
return c
}
@ -103,7 +110,6 @@ func TestChildCommand(t *testing.T) {
func TestFlagLong(t *testing.T) {
c := initialize()
c.AddCommand(cmdPrint, cmdEcho, cmdTimes)
flagInit()
c.SetArgs(strings.Split("echo --intone=13 something here", " "))
c.Execute()
@ -121,7 +127,6 @@ func TestFlagLong(t *testing.T) {
func TestFlagShort(t *testing.T) {
c := initialize()
c.AddCommand(cmdPrint, cmdEcho, cmdTimes)
flagInit()
c.SetArgs(strings.Split("echo -i13 something here", " "))
c.Execute()
@ -137,7 +142,6 @@ func TestFlagShort(t *testing.T) {
c = initialize()
c.AddCommand(cmdPrint, cmdEcho, cmdTimes)
flagInit()
c.SetArgs(strings.Split("echo -i 13 something here", " "))
c.Execute()
@ -154,7 +158,6 @@ func TestFlagShort(t *testing.T) {
// Testing same shortcode, different command
c = initialize()
c.AddCommand(cmdPrint, cmdEcho, cmdTimes)
flagInit()
c.SetArgs(strings.Split("print -i99 one two", " "))
c.Execute()