Refactor SplitShellStrings

This commit is contained in:
Alexander Neumann 2018-03-13 20:50:37 +01:00
parent 345b6c4694
commit 34f27edc03
3 changed files with 26 additions and 33 deletions

View file

@ -8,59 +8,53 @@ import (
func TestShellSplitter(t *testing.T) {
var tests = []struct {
data string
cmd string
args []string
}{
{
`foo`,
"foo", []string{},
[]string{"foo"},
},
{
`'foo'`,
"foo", []string{},
[]string{"foo"},
},
{
`foo bar baz`,
"foo", []string{"bar", "baz"},
[]string{"foo", "bar", "baz"},
},
{
`foo 'bar' baz`,
"foo", []string{"bar", "baz"},
[]string{"foo", "bar", "baz"},
},
{
`'bar box' baz`,
"bar box", []string{"baz"},
[]string{"bar box", "baz"},
},
{
`"bar 'box'" baz`,
"bar 'box'", []string{"baz"},
[]string{"bar 'box'", "baz"},
},
{
`'bar "box"' baz`,
`bar "box"`, []string{"baz"},
[]string{`bar "box"`, "baz"},
},
{
`\"bar box baz`,
`"bar`, []string{"box", "baz"},
[]string{`"bar`, "box", "baz"},
},
{
`"bar/foo/x" "box baz"`,
"bar/foo/x", []string{"box baz"},
[]string{"bar/foo/x", "box baz"},
},
}
for _, test := range tests {
t.Run("", func(t *testing.T) {
cmd, args, err := SplitShellArgs(test.data)
args, err := SplitShellStrings(test.data)
if err != nil {
t.Fatal(err)
}
if cmd != test.cmd {
t.Fatalf("wrong cmd returned, want:\n %#v\ngot:\n %#v",
test.cmd, cmd)
}
if !reflect.DeepEqual(args, test.args) {
t.Fatalf("wrong args returned, want:\n %#v\ngot:\n %#v",
test.args, args)
@ -94,7 +88,7 @@ func TestShellSplitterInvalid(t *testing.T) {
for _, test := range tests {
t.Run("", func(t *testing.T) {
cmd, args, err := SplitShellArgs(test.data)
args, err := SplitShellStrings(test.data)
if err == nil {
t.Fatalf("expected error not found: %v", test.err)
}
@ -103,10 +97,6 @@ func TestShellSplitterInvalid(t *testing.T) {
t.Fatalf("expected error not found, want:\n %q\ngot:\n %q", test.err, err.Error())
}
if cmd != "" {
t.Fatalf("splitter returned cmd from invalid data: %v", cmd)
}
if len(args) > 0 {
t.Fatalf("splitter returned fields from invalid data: %v", args)
}