plugin/v2/settable_test.go
efbed450
 package v2
 
 import (
 	"reflect"
 	"testing"
 )
 
 func TestNewSettable(t *testing.T) {
 	contexts := []struct {
 		arg   string
 		name  string
 		field string
 		value string
 		err   error
 	}{
 		{"name=value", "name", "", "value", nil},
 		{"name", "name", "", "", nil},
 		{"name.field=value", "name", "field", "value", nil},
 		{"name.field", "name", "field", "", nil},
 		{"=value", "", "", "", errInvalidFormat},
 		{"=", "", "", "", errInvalidFormat},
 	}
 
 	for _, c := range contexts {
 		s, err := newSettable(c.arg)
 		if err != c.err {
 			t.Fatalf("expected error to be %v, got %v", c.err, err)
 		}
 
 		if s.name != c.name {
 			t.Fatalf("expected name to be %q, got %q", c.name, s.name)
 		}
 
 		if s.field != c.field {
 			t.Fatalf("expected field to be %q, got %q", c.field, s.field)
 		}
 
 		if s.value != c.value {
 			t.Fatalf("expected value to be %q, got %q", c.value, s.value)
 		}
 
 	}
 }
 
 func TestIsSettable(t *testing.T) {
 	contexts := []struct {
 		allowedSettableFields []string
 		set                   settable
 		settable              []string
 		result                bool
 		err                   error
 	}{
 		{allowedSettableFieldsEnv, settable{}, []string{}, false, nil},
 		{allowedSettableFieldsEnv, settable{field: "value"}, []string{}, false, nil},
 		{allowedSettableFieldsEnv, settable{}, []string{"value"}, true, nil},
 		{allowedSettableFieldsEnv, settable{field: "value"}, []string{"value"}, true, nil},
 		{allowedSettableFieldsEnv, settable{field: "foo"}, []string{"value"}, false, nil},
 		{allowedSettableFieldsEnv, settable{field: "foo"}, []string{"foo"}, false, nil},
 		{allowedSettableFieldsEnv, settable{}, []string{"value1", "value2"}, false, errMultipleFields},
 	}
 
 	for _, c := range contexts {
 		if res, err := c.set.isSettable(c.allowedSettableFields, c.settable); res != c.result {
 			t.Fatalf("expected result to be %t, got %t", c.result, res)
 		} else if err != c.err {
 			t.Fatalf("expected error to be %v, got %v", c.err, err)
 		}
 	}
 }
 
39bcaee4
 func TestUpdateSettingsEnv(t *testing.T) {
efbed450
 	contexts := []struct {
 		env    []string
 		set    settable
 		newEnv []string
 	}{
 		{[]string{}, settable{name: "DEBUG", value: "1"}, []string{"DEBUG=1"}},
 		{[]string{"DEBUG=0"}, settable{name: "DEBUG", value: "1"}, []string{"DEBUG=1"}},
 		{[]string{"FOO=0"}, settable{name: "DEBUG", value: "1"}, []string{"FOO=0", "DEBUG=1"}},
 		{[]string{"FOO=0", "DEBUG=0"}, settable{name: "DEBUG", value: "1"}, []string{"FOO=0", "DEBUG=1"}},
 		{[]string{"FOO=0", "DEBUG=0", "BAR=1"}, settable{name: "DEBUG", value: "1"}, []string{"FOO=0", "DEBUG=1", "BAR=1"}},
 	}
 
 	for _, c := range contexts {
fc7a2652
 		updateSettingsEnv(&c.env, &c.set)
efbed450
 
 		if !reflect.DeepEqual(c.env, c.newEnv) {
 			t.Fatalf("expected env to be %q, got %q", c.newEnv, c.env)
 		}
 	}
 }