76 lines
1.5 KiB
Go
76 lines
1.5 KiB
Go
|
package command
|
||
|
|
||
|
import (
|
||
|
"testing"
|
||
|
|
||
|
"github.com/stretchr/testify/assert"
|
||
|
)
|
||
|
|
||
|
func TestLogFlags_ValuesProvider(t *testing.T) {
|
||
|
cases := map[string]struct {
|
||
|
flagKey string
|
||
|
envVarKey string
|
||
|
current string
|
||
|
fallback string
|
||
|
want string
|
||
|
}{
|
||
|
"only-fallback": {
|
||
|
flagKey: "invalid",
|
||
|
envVarKey: "invalid",
|
||
|
current: "",
|
||
|
fallback: "foo",
|
||
|
want: "foo",
|
||
|
},
|
||
|
"only-config": {
|
||
|
flagKey: "invalid",
|
||
|
envVarKey: "invalid",
|
||
|
current: "bar",
|
||
|
fallback: "",
|
||
|
want: "bar",
|
||
|
},
|
||
|
"flag-missing": {
|
||
|
flagKey: "invalid",
|
||
|
envVarKey: "valid-env-var",
|
||
|
current: "my-config-value1",
|
||
|
fallback: "",
|
||
|
want: "envVarValue",
|
||
|
},
|
||
|
"envVar-missing": {
|
||
|
flagKey: "valid-flag",
|
||
|
envVarKey: "invalid",
|
||
|
current: "my-config-value1",
|
||
|
fallback: "",
|
||
|
want: "flagValue",
|
||
|
},
|
||
|
"all-present": {
|
||
|
flagKey: "valid-flag",
|
||
|
envVarKey: "valid-env-var",
|
||
|
current: "my-config-value1",
|
||
|
fallback: "foo",
|
||
|
want: "flagValue",
|
||
|
},
|
||
|
}
|
||
|
|
||
|
// Sneaky little fake provider
|
||
|
fakeProvider := func(key string) (string, bool) {
|
||
|
switch key {
|
||
|
case "valid-flag":
|
||
|
return "flagValue", true
|
||
|
case "valid-env-var":
|
||
|
return "envVarValue", true
|
||
|
}
|
||
|
|
||
|
return "", false
|
||
|
}
|
||
|
|
||
|
vp := valuesProvider{
|
||
|
flagProvider: fakeProvider,
|
||
|
envVarProvider: fakeProvider,
|
||
|
}
|
||
|
|
||
|
for _, tc := range cases {
|
||
|
got := vp.getAggregatedConfigValue(tc.flagKey, tc.envVarKey, tc.current, tc.fallback)
|
||
|
assert.Equal(t, tc.want, got)
|
||
|
}
|
||
|
}
|