If the extension is empty, do not append the dot when building the path

This allows to append "" to the viper.SupportedExts, while still set
the config type, and have viper not append anything instead of
appending just a dot.
This commit is contained in:
Duncan Mac-Vicar P 2019-02-05 14:04:58 +01:00
parent 40e41dd224
commit 19b0e4054c
2 changed files with 30 additions and 4 deletions

View file

@ -1874,10 +1874,16 @@ func (v *Viper) getConfigFile() (string, error) {
func (v *Viper) searchInPath(in string) (filename string) { func (v *Viper) searchInPath(in string) (filename string) {
jww.DEBUG.Println("Searching for config in ", in) jww.DEBUG.Println("Searching for config in ", in)
for _, ext := range SupportedExts { for _, ext := range SupportedExts {
jww.DEBUG.Println("Checking for", filepath.Join(in, v.configName+"."+ext)) configFilePlusExt := ""
if b, _ := exists(v.fs, filepath.Join(in, v.configName+"."+ext)); b { if ext != "" {
jww.DEBUG.Println("Found: ", filepath.Join(in, v.configName+"."+ext)) configFilePlusExt = v.configName + "." + ext
return filepath.Join(in, v.configName+"."+ext) } else {
configFilePlusExt = v.configName
}
jww.DEBUG.Println("Checking for", filepath.Join(in, configFilePlusExt))
if b, _ := exists(v.fs, filepath.Join(in, configFilePlusExt)); b {
jww.DEBUG.Println("Found: ", filepath.Join(in, configFilePlusExt))
return filepath.Join(in, configFilePlusExt)
} }
} }

View file

@ -1112,6 +1112,26 @@ func TestSub(t *testing.T) {
assert.Equal(t, (*Viper)(nil), subv) assert.Equal(t, (*Viper)(nil), subv)
} }
func TestEmptyExtension(t *testing.T) {
v := New()
fs := afero.NewMemMapFs()
v.SetFs(fs)
v.SetConfigName("config")
v.SetConfigType("json")
v.AddConfigPath("/etc/app/")
SupportedExts = append(SupportedExts, "")
err := afero.WriteFile(fs, "/etc/app/config", jsonExample, 0644)
if err != nil {
t.Fatal(err)
}
err = v.ReadInConfig()
if err != nil {
t.Fatal(err)
}
}
var hclWriteExpected = []byte(`"foos" = { var hclWriteExpected = []byte(`"foos" = {
"foo" = { "foo" = {
"key" = 1 "key" = 1