github.com/lazyboychen7/engine@v17.12.1-ce-rc2+incompatible/plugin/v2/settable_test.go (about)

     1  package v2
     2  
     3  import (
     4  	"reflect"
     5  	"testing"
     6  )
     7  
     8  func TestNewSettable(t *testing.T) {
     9  	contexts := []struct {
    10  		arg   string
    11  		name  string
    12  		field string
    13  		value string
    14  		err   error
    15  	}{
    16  		{"name=value", "name", "", "value", nil},
    17  		{"name", "name", "", "", nil},
    18  		{"name.field=value", "name", "field", "value", nil},
    19  		{"name.field", "name", "field", "", nil},
    20  		{"=value", "", "", "", errInvalidFormat},
    21  		{"=", "", "", "", errInvalidFormat},
    22  	}
    23  
    24  	for _, c := range contexts {
    25  		s, err := newSettable(c.arg)
    26  		if err != c.err {
    27  			t.Fatalf("expected error to be %v, got %v", c.err, err)
    28  		}
    29  
    30  		if s.name != c.name {
    31  			t.Fatalf("expected name to be %q, got %q", c.name, s.name)
    32  		}
    33  
    34  		if s.field != c.field {
    35  			t.Fatalf("expected field to be %q, got %q", c.field, s.field)
    36  		}
    37  
    38  		if s.value != c.value {
    39  			t.Fatalf("expected value to be %q, got %q", c.value, s.value)
    40  		}
    41  
    42  	}
    43  }
    44  
    45  func TestIsSettable(t *testing.T) {
    46  	contexts := []struct {
    47  		allowedSettableFields []string
    48  		set                   settable
    49  		settable              []string
    50  		result                bool
    51  		err                   error
    52  	}{
    53  		{allowedSettableFieldsEnv, settable{}, []string{}, false, nil},
    54  		{allowedSettableFieldsEnv, settable{field: "value"}, []string{}, false, nil},
    55  		{allowedSettableFieldsEnv, settable{}, []string{"value"}, true, nil},
    56  		{allowedSettableFieldsEnv, settable{field: "value"}, []string{"value"}, true, nil},
    57  		{allowedSettableFieldsEnv, settable{field: "foo"}, []string{"value"}, false, nil},
    58  		{allowedSettableFieldsEnv, settable{field: "foo"}, []string{"foo"}, false, nil},
    59  		{allowedSettableFieldsEnv, settable{}, []string{"value1", "value2"}, false, errMultipleFields},
    60  	}
    61  
    62  	for _, c := range contexts {
    63  		if res, err := c.set.isSettable(c.allowedSettableFields, c.settable); res != c.result {
    64  			t.Fatalf("expected result to be %t, got %t", c.result, res)
    65  		} else if err != c.err {
    66  			t.Fatalf("expected error to be %v, got %v", c.err, err)
    67  		}
    68  	}
    69  }
    70  
    71  func TestUpdateSettingsEnv(t *testing.T) {
    72  	contexts := []struct {
    73  		env    []string
    74  		set    settable
    75  		newEnv []string
    76  	}{
    77  		{[]string{}, settable{name: "DEBUG", value: "1"}, []string{"DEBUG=1"}},
    78  		{[]string{"DEBUG=0"}, settable{name: "DEBUG", value: "1"}, []string{"DEBUG=1"}},
    79  		{[]string{"FOO=0"}, settable{name: "DEBUG", value: "1"}, []string{"FOO=0", "DEBUG=1"}},
    80  		{[]string{"FOO=0", "DEBUG=0"}, settable{name: "DEBUG", value: "1"}, []string{"FOO=0", "DEBUG=1"}},
    81  		{[]string{"FOO=0", "DEBUG=0", "BAR=1"}, settable{name: "DEBUG", value: "1"}, []string{"FOO=0", "DEBUG=1", "BAR=1"}},
    82  	}
    83  
    84  	for _, c := range contexts {
    85  		updateSettingsEnv(&c.env, &c.set)
    86  
    87  		if !reflect.DeepEqual(c.env, c.newEnv) {
    88  			t.Fatalf("expected env to be %q, got %q", c.newEnv, c.env)
    89  		}
    90  	}
    91  }