mirror of
https://github.com/zalando/postgres-operator.git
synced 2026-10-19 12:23:59 +02:00
Add tests for the string splitting function.
This commit is contained in:
@@ -0,0 +1,32 @@
|
|||||||
|
package config
|
||||||
|
|
||||||
|
import (
|
||||||
|
"testing"
|
||||||
|
"reflect"
|
||||||
|
"fmt"
|
||||||
|
)
|
||||||
|
|
||||||
|
var getMapPairsFromStringTest = []struct {
|
||||||
|
in string
|
||||||
|
expected []string
|
||||||
|
err error
|
||||||
|
}{
|
||||||
|
{"log_statement:all, work_mem:'4GB'", []string{"log_statement:all", "work_mem:'4GB'"}, nil},
|
||||||
|
{`log_statement:none, search_path:'"$user", public'`, []string{"log_statement:none", `search_path:'"$user", public'`}, nil},
|
||||||
|
{`search_path:'"$user"`, nil, fmt.Errorf("unclosed quote starting at position 13")},
|
||||||
|
{"", []string{""}, nil},
|
||||||
|
{",,log_statement:all ,", []string{"","","log_statement:all", ""}, nil},
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestGetMapPairsFromString(t *testing.T) {
|
||||||
|
for _, tt := range getMapPairsFromStringTest {
|
||||||
|
got, err := getMapPairsFromString(tt.in)
|
||||||
|
if err != tt.err && ((err == nil || tt.err == nil) || (err.Error() != tt.err.Error())) {
|
||||||
|
t.Errorf("TestGetMapPairsFromString with %s: expected error: %#v, got %#v", tt.in, tt.err, err)
|
||||||
|
}
|
||||||
|
if !reflect.DeepEqual(got, tt.expected) {
|
||||||
|
t.Errorf("TestGetMapPairsFromString with %s: expected %#v, got %#v", tt.in, tt.expected, got)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@@ -185,9 +185,6 @@ func getMapPairsFromString(value string) (pairs []string , err error) {
|
|||||||
state := Plain
|
state := Plain
|
||||||
var start, quote int
|
var start, quote int
|
||||||
|
|
||||||
if value == "" {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
for i, ch := range(strings.Split(value, "")) {
|
for i, ch := range(strings.Split(value, "")) {
|
||||||
if ch == `"` {
|
if ch == `"` {
|
||||||
if state == Plain {
|
if state == Plain {
|
||||||
@@ -208,14 +205,16 @@ func getMapPairsFromString(value string) (pairs []string , err error) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if ch == "," && state == Plain {
|
if ch == "," && state == Plain {
|
||||||
pairs = append(pairs, value[start:i])
|
pairs = append(pairs, strings.Trim(value[start:i]," \t"))
|
||||||
start = i
|
start = i + 1
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if state != Plain {
|
if state != Plain {
|
||||||
err = fmt.Errorf("unclosed quote starting at position %d", quote)
|
err = fmt.Errorf("unclosed quote starting at position %d", quote + 1)
|
||||||
|
pairs = nil
|
||||||
|
} else {
|
||||||
|
pairs = append(pairs, strings.Trim(value[start:], " \t"))
|
||||||
}
|
}
|
||||||
pairs = append(pairs, value[start:])
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user