From eabbc68a3ecd5cf8c11a2f84dbda5e7a38493b2f Mon Sep 17 00:00:00 2001 From: Mark Sagi-Kazar Date: Fri, 6 Dec 2019 17:23:59 +0100 Subject: [PATCH] Fix file path lookup --- util.go | 6 +++--- viper_test.go | 20 ++++++++++++++++++++ 2 files changed, 23 insertions(+), 3 deletions(-) diff --git a/util.go b/util.go index 952cad4..b788969 100644 --- a/util.go +++ b/util.go @@ -114,11 +114,11 @@ func absPathify(inPath string) string { return "" } -// Check if File / Directory Exists +// Check if file Exists func exists(fs afero.Fs, path string) (bool, error) { - _, err := fs.Stat(path) + stat, err := fs.Stat(path) if err == nil { - return true, nil + return !stat.IsDir(), nil } if os.IsNotExist(err) { return false, nil diff --git a/viper_test.go b/viper_test.go index 8f010c7..fcd1b0e 100644 --- a/viper_test.go +++ b/viper_test.go @@ -323,6 +323,26 @@ func TestSearchInPath(t *testing.T) { assert.NoError(t, err) } +func TestSearchInPath_FilesOnly(t *testing.T) { + fs := afero.NewMemMapFs() + + err := fs.Mkdir("/tmp/config", 0777) + require.NoError(t, err) + + _, err = fs.Create("/tmp/config/config.yaml") + require.NoError(t, err) + + v := New() + + v.SetFs(fs) + v.AddConfigPath("/tmp") + v.AddConfigPath("/tmp/config") + + filename, err := v.getConfigFile() + assert.Equal(t, "/tmp/config/config.yaml", filename) + assert.NoError(t, err) +} + func TestDefault(t *testing.T) { SetDefault("age", 45) assert.Equal(t, 45, Get("age"))