Use a test table and add --help test

Signed-off-by: Nathan LeClaire <nathan.leclaire@gmail.com>
This commit is contained in:
Nathan LeClaire 2015-10-27 13:33:55 -07:00 committed by Jesse Szwedko
parent 8cd49b108c
commit 3323ab4460

View File

@ -1,70 +1,43 @@
package cli package cli
import ( import (
"errors"
"flag" "flag"
"testing" "testing"
) )
func TestCommandDoNotIgnoreFlags(t *testing.T) { func TestCommandFlagParsing(t *testing.T) {
app := NewApp() cases := []struct {
set := flag.NewFlagSet("test", 0) testArgs []string
test := []string{"blah", "blah", "-break"} skipFlagParsing bool
set.Parse(test) expectedErr error
}{
c := NewContext(app, set, nil) {[]string{"blah", "blah", "-break"}, false, errors.New("flag provided but not defined: -break")}, // Test normal "not ignoring flags" flow
{[]string{"blah", "blah"}, true, nil}, // Test SkipFlagParsing without any args that look like flags
command := Command{ {[]string{"blah", "-break"}, true, nil}, // Test SkipFlagParsing with random flag arg
Name: "test-cmd", {[]string{"blah", "-help"}, true, nil}, // Test SkipFlagParsing with "special" help flag arg
Aliases: []string{"tc"},
Usage: "this is for testing",
Description: "testing",
Action: func(_ *Context) {},
} }
err := command.Run(c)
expect(t, err.Error(), "flag provided but not defined: -break") for _, c := range cases {
} app := NewApp()
set := flag.NewFlagSet("test", 0)
set.Parse(c.testArgs)
func TestCommandIgnoreFlags(t *testing.T) { context := NewContext(app, set, nil)
app := NewApp()
set := flag.NewFlagSet("test", 0)
test := []string{"blah", "blah", "-break"}
set.Parse(test)
c := NewContext(app, set, nil) command := Command{
Name: "test-cmd",
Aliases: []string{"tc"},
Usage: "this is for testing",
Description: "testing",
Action: func(_ *Context) {},
}
command := Command{ command.SkipFlagParsing = c.skipFlagParsing
Name: "test-cmd",
Aliases: []string{"tc"}, err := command.Run(context)
Usage: "this is for testing",
Description: "testing", expect(t, err, c.expectedErr)
Action: func(_ *Context) {}, expect(t, []string(context.Args()), c.testArgs)
SkipFlagParsing: true,
} }
err := command.Run(c)
expect(t, err, nil)
}
// Fix bug with ignoring flag parsing that would still parse the first flag
func TestCommandIgnoreFlagsIncludingFirstArgument(t *testing.T) {
app := NewApp()
set := flag.NewFlagSet("test", 0)
test := []string{"blah", "-break"}
set.Parse(test)
c := NewContext(app, set, nil)
command := Command{
Name: "test-cmd",
Aliases: []string{"tc"},
Usage: "this is for testing",
Description: "testing",
Action: func(_ *Context) {},
SkipFlagParsing: true,
}
err := command.Run(c)
expect(t, err, nil)
expect(t, []string(c.Args()), []string{"blah", "-break"})
} }