github.com/yankunsam/loki/v2@v2.6.3-0.20220817130409-389df5235c27/pkg/util/cfg/precedence_test.go (about) 1 package cfg 2 3 import ( 4 "flag" 5 "testing" 6 "time" 7 8 "github.com/stretchr/testify/assert" 9 "github.com/stretchr/testify/require" 10 ) 11 12 // This file checks precedence rules are correctly working 13 // The default precedence recommended by this package is the following: 14 // flag defaults < yaml < user-set flags 15 // 16 // The following tests make sure that this is indeed correct 17 18 const y = ` 19 verbose: true 20 tls: 21 cert: YAML 22 server: 23 port: 1234 24 ` 25 26 func TestYAMLOverDefaults(t *testing.T) { 27 data := Data{} 28 fs := flag.NewFlagSet(t.Name(), flag.PanicOnError) 29 err := Unmarshal(&data, 30 Defaults(fs), 31 dYAML([]byte(y)), 32 ) 33 34 require.NoError(t, err) 35 assert.Equal(t, Data{ 36 Verbose: true, // yaml 37 Server: Server{ 38 Port: 1234, // yaml 39 Timeout: 60 * time.Second, // default 40 }, 41 TLS: TLS{ 42 Cert: "YAML", // yaml 43 Key: "DEFAULTKEY", // default 44 }, 45 }, data) 46 } 47 48 func TestFlagOverYAML(t *testing.T) { 49 data := Data{} 50 fs := flag.NewFlagSet(t.Name(), flag.PanicOnError) 51 52 err := Unmarshal(&data, 53 Defaults(fs), 54 dYAML([]byte(y)), 55 dFlags(fs, []string{"-verbose=false", "-tls.cert=CLI"}), 56 ) 57 58 require.NoError(t, err) 59 assert.Equal(t, Data{ 60 Verbose: false, // flag 61 Server: Server{ 62 Port: 1234, // yaml 63 Timeout: 60 * time.Second, // default 64 }, 65 TLS: TLS{ 66 Cert: "CLI", // flag 67 Key: "DEFAULTKEY", // default 68 }, 69 }, data) 70 }