monzero/cmd/monwork/shell_fields_test.go
Gibheer 10fb89a017 monwork - readd stringToShellFields
This function was needed as bytes.Fields had some problems with the
quoting.
Now there are test cases too so that errors can be found more easily.
2018-12-14 14:02:58 +01:00

40 lines
955 B
Go

package main
import (
"bytes"
"fmt"
"testing"
)
func TestStringToShellFields(t *testing.T) {
type S struct {
source string
target []string
}
for i, e := range []S{
S{"foo", []string{"foo"}},
S{"foo bar", []string{"foo", "bar"}},
S{`foo "bar"`, []string{"foo", `bar`}},
S{`foo "bar baz"`, []string{"foo", `bar baz`}},
S{`foo "bar" "baz"`, []string{"foo", `bar`, `baz`}},
S{`foo "bar" "baz"`, []string{"foo", `bar`, `baz`}},
} {
result := stringToShellFields([]byte(e.source))
if err := compare(e.target, result); err != nil {
t.Errorf("test %d did not match: %s", i, err)
}
}
}
func compare(source []string, target [][]byte) error {
if len(source) != len(target) {
return fmt.Errorf("length mismatch %d vs %d", len(source), len(target))
}
for i, e := range source {
if bytes.Compare([]byte(e), target[i]) != 0 {
return fmt.Errorf("mismatch in content field %d: %s vs %s", i, e, target[i])
}
}
return nil
}