diff --git a/viper.go b/viper.go index 5133de7..7eecbbc 100644 --- a/viper.go +++ b/viper.go @@ -1874,10 +1874,16 @@ func (v *Viper) getConfigFile() (string, error) { func (v *Viper) searchInPath(in string) (filename string) { jww.DEBUG.Println("Searching for config in ", in) for _, ext := range SupportedExts { - jww.DEBUG.Println("Checking for", filepath.Join(in, v.configName+"."+ext)) - if b, _ := exists(v.fs, filepath.Join(in, v.configName+"."+ext)); b { - jww.DEBUG.Println("Found: ", filepath.Join(in, v.configName+"."+ext)) - return filepath.Join(in, v.configName+"."+ext) + configFilePlusExt := "" + if ext != "" { + configFilePlusExt = 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) } } diff --git a/viper_test.go b/viper_test.go index f8364a0..286f85c 100644 --- a/viper_test.go +++ b/viper_test.go @@ -1112,6 +1112,26 @@ func TestSub(t *testing.T) { 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" = { "foo" = { "key" = 1