github.com/stffabi/git-lfs@v2.3.5-0.20180214015214-8eeaa8d88902+incompatible/config/environment_test.go (about)

     1  package config_test
     2  
     3  import (
     4  	"testing"
     5  
     6  	. "github.com/git-lfs/git-lfs/config"
     7  	"github.com/stretchr/testify/assert"
     8  )
     9  
    10  func TestEnvironmentGetDelegatesToFetcher(t *testing.T) {
    11  	fetcher := MapFetcher(map[string][]string{
    12  		"foo": []string{"bar", "baz"},
    13  	})
    14  
    15  	env := EnvironmentOf(fetcher)
    16  	val, ok := env.Get("foo")
    17  
    18  	assert.True(t, ok)
    19  	assert.Equal(t, "baz", val)
    20  }
    21  
    22  func TestEnvironmentGetAllDelegatesToFetcher(t *testing.T) {
    23  	fetcher := MapFetcher(map[string][]string{
    24  		"foo": []string{"bar", "baz"},
    25  	})
    26  
    27  	env := EnvironmentOf(fetcher)
    28  	vals := env.GetAll("foo")
    29  
    30  	assert.Equal(t, []string{"bar", "baz"}, vals)
    31  }
    32  
    33  func TestEnvironmentUnsetBoolDefault(t *testing.T) {
    34  	env := EnvironmentOf(MapFetcher(nil))
    35  	assert.True(t, env.Bool("unset", true))
    36  }
    37  
    38  func TestEnvironmentBoolTruthyConversion(t *testing.T) {
    39  	for _, c := range []EnvironmentConversionTestCase{
    40  		{"", false, GetBoolDefault(false)},
    41  
    42  		{"true", true, GetBoolDefault(false)},
    43  		{"1", true, GetBoolDefault(false)},
    44  		{"on", true, GetBoolDefault(false)},
    45  		{"yes", true, GetBoolDefault(false)},
    46  		{"t", true, GetBoolDefault(false)},
    47  
    48  		{"false", false, GetBoolDefault(true)},
    49  		{"0", false, GetBoolDefault(true)},
    50  		{"off", false, GetBoolDefault(true)},
    51  		{"no", false, GetBoolDefault(true)},
    52  		{"f", false, GetBoolDefault(true)},
    53  	} {
    54  		c.Assert(t)
    55  	}
    56  }
    57  
    58  func TestEnvironmentIntTestCases(t *testing.T) {
    59  	for _, c := range []EnvironmentConversionTestCase{
    60  		{"", 1, GetIntDefault(1)},
    61  
    62  		{"1", 1, GetIntDefault(0)},
    63  		{"3", 3, GetIntDefault(0)},
    64  
    65  		{"malformed", 7, GetIntDefault(7)},
    66  	} {
    67  		c.Assert(t)
    68  	}
    69  }
    70  
    71  type EnvironmentConversionTestCase struct {
    72  	Val      string
    73  	Expected interface{}
    74  
    75  	GotFn func(env Environment, key string) interface{}
    76  }
    77  
    78  var (
    79  	GetBoolDefault = func(def bool) func(e Environment, key string) interface{} {
    80  		return func(e Environment, key string) interface{} {
    81  			return e.Bool(key, def)
    82  		}
    83  	}
    84  
    85  	GetIntDefault = func(def int) func(e Environment, key string) interface{} {
    86  		return func(e Environment, key string) interface{} {
    87  			return e.Int(key, def)
    88  		}
    89  	}
    90  )
    91  
    92  func (c *EnvironmentConversionTestCase) Assert(t *testing.T) {
    93  	fetcher := MapFetcher(map[string][]string{
    94  		c.Val: []string{c.Val},
    95  	})
    96  
    97  	env := EnvironmentOf(fetcher)
    98  	got := c.GotFn(env, c.Val)
    99  
   100  	if c.Expected != got {
   101  		t.Errorf("lfs/config: expected val=%q to be %q (got: %q)", c.Val, c.Expected, got)
   102  	}
   103  }