now
All checks were successful
continuous-integration/drone/pr Build is passing

This commit is contained in:
p4u1 2024-07-06 16:33:42 +02:00
parent 973270b8b5
commit 1fbc07a2b4
2 changed files with 73 additions and 80 deletions

View File

@ -1,7 +1,6 @@
package config
import (
"log"
"os"
"path"
"path/filepath"
@ -18,14 +17,12 @@ func LoadAbraConfig() Abra {
configFile := findAbraConfig(wd)
if configFile == "" {
logrus.Debugf("no config file found")
log.Println("no config file found")
return Abra{}
}
data, err := os.ReadFile(configFile)
if err != nil {
// Do nothing, when an error occurs
logrus.Debugf("error reading config file: %s", err)
log.Printf("error reading config file: %s", err)
return Abra{}
}
@ -34,7 +31,6 @@ func LoadAbraConfig() Abra {
if err != nil {
// Do nothing, when an error occurs
logrus.Debugf("error loading config file: %s", err)
log.Printf("error loading config file: %s", err)
return Abra{}
}
logrus.Debugf("config file loaded from: %s", configFile)
@ -47,24 +43,19 @@ func LoadAbraConfig() Abra {
// directory until the home directory is hit. When no abra config was found it
// returns an empty string.
func findAbraConfig(dir string) string {
log.Println("find", dir)
dir, err := filepath.Abs(dir)
if err != nil {
log.Println("here")
return ""
}
if dir == os.ExpandEnv("$HOME") || dir == "/" {
log.Println("there")
return ""
}
p := path.Join(dir, "abra.yaml")
if _, err := os.Stat(p); err == nil {
log.Println("where", p)
return p
}
p = path.Join(dir, "abra.yml")
if _, err := os.Stat(p); err == nil {
log.Println("lhere", p)
return p
}
return findAbraConfig(filepath.Dir(dir))
@ -81,17 +72,19 @@ type Abra struct {
// 2. check if abraDir was set in a config file
// 3. use $HOME/.abra when above two options failed
func (a Abra) GetAbraDir() string {
log.Println(os.LookupEnv("ABRA_DIR"))
if dir, exists := os.LookupEnv("ABRA_DIR"); exists && dir != "" {
logrus.Debug("read abra dir from $ABRA_DIR")
return dir
}
if a.AbraDir != "" {
logrus.Debug("read abra dir from config file")
if path.IsAbs(a.AbraDir) {
return a.AbraDir
}
// Make the path absolute
return path.Join(a.configPath, a.AbraDir)
}
logrus.Debug("using default abra dir")
return os.ExpandEnv("$HOME/.abra")
}

View File

@ -7,60 +7,61 @@ import (
"testing"
)
// func TestFindAbraConfig(t *testing.T) {
// wd, err := os.Getwd()
// if err != nil {
// log.Fatal(err)
// }
// tests := []struct {
// Dir string
// Config string
// }{
// {
// Dir: "testdata/abraconfig1",
// Config: filepath.Join(wd, "testdata/abraconfig1/abra.yaml"),
// },
// {
// Dir: "testdata/abraconfig1/subdir",
// Config: filepath.Join(wd, "testdata/abraconfig1/abra.yaml"),
// },
// {
// Dir: "testdata/abraconfig2",
// Config: filepath.Join(wd, "testdata/abraconfig2/abra.yml"),
// },
// {
// Dir: "testdata/abraconfig2/subdir",
// Config: filepath.Join(wd, "testdata/abraconfig2/abra.yml"),
// },
// {
// Dir: "testdata",
// Config: "",
// },
// }
//
// for _, tc := range tests {
// t.Run(tc.Dir, func(t *testing.T) {
// config := findAbraConfig(tc.Dir)
// if config != tc.Config {
// t.Errorf("\nwant: %s\ngot: %s", tc.Config, config)
// }
// })
// }
// }
func TestFindAbraConfig(t *testing.T) {
wd, err := os.Getwd()
if err != nil {
log.Fatal(err)
}
tests := []struct {
Dir string
Config string
}{
{
Dir: "testdata/abraconfig1",
Config: filepath.Join(wd, "testdata/abraconfig1/abra.yaml"),
},
{
Dir: "testdata/abraconfig1/subdir",
Config: filepath.Join(wd, "testdata/abraconfig1/abra.yaml"),
},
{
Dir: "testdata/abraconfig2",
Config: filepath.Join(wd, "testdata/abraconfig2/abra.yml"),
},
{
Dir: "testdata/abraconfig2/subdir",
Config: filepath.Join(wd, "testdata/abraconfig2/abra.yml"),
},
{
Dir: "testdata",
Config: "",
},
}
for _, tc := range tests {
t.Run(tc.Dir, func(t *testing.T) {
config := findAbraConfig(tc.Dir)
if config != tc.Config {
t.Errorf("\nwant: %s\ngot: %s", tc.Config, config)
}
})
}
}
func TestLoadAbraConfigGetAbraDir(t *testing.T) {
wd, err := os.Getwd()
if err != nil {
log.Fatal(err)
}
t.Setenv("ABRA_DIR", "")
// t.Run("default", func(t *testing.T) {
// cfg := LoadAbraConfig()
// wantAbraDir := os.ExpandEnv("$HOME/.abra")
// if cfg.GetAbraDir() != wantAbraDir {
// t.Errorf("\nwant: %s\ngot: %s", wantAbraDir, cfg.GetAbraDir())
// }
// })
t.Run("default", func(t *testing.T) {
cfg := LoadAbraConfig()
wantAbraDir := os.ExpandEnv("$HOME/.abra")
if cfg.GetAbraDir() != wantAbraDir {
t.Errorf("\nwant: %s\ngot: %s", wantAbraDir, cfg.GetAbraDir())
}
})
t.Run("from config file", func(t *testing.T) {
t.Cleanup(func() { os.Chdir(wd) })
@ -75,29 +76,28 @@ func TestLoadAbraConfigGetAbraDir(t *testing.T) {
if cfg.GetAbraDir() != wantAbraDir {
t.Errorf("\nwant: %s\ngot: %s", wantAbraDir, cfg.GetAbraDir())
}
t.Fatal()
})
// t.Run("default when config file is empty", func(t *testing.T) {
// t.Cleanup(func() { os.Chdir(wd) })
// err := os.Chdir(filepath.Join(wd, "testdata/abraconfig2"))
// if err != nil {
// log.Fatal(err)
// }
//
// cfg := LoadAbraConfig()
// wantAbraDir := os.ExpandEnv("$HOME/.abra")
// if cfg.GetAbraDir() != wantAbraDir {
// t.Errorf("\nwant: %s\ngot: %s", wantAbraDir, cfg.GetAbraDir())
// }
// })
//
// t.Run("from env variable", func(t *testing.T) {
// t.Setenv("ABRA_DIR", "foo")
// cfg := LoadAbraConfig()
// wantAbraDir := "foo"
// if cfg.GetAbraDir() != wantAbraDir {
// t.Errorf("\nwant: %s\ngot: %s", wantAbraDir, cfg.GetAbraDir())
// }
// })
t.Run("default when config file is empty", func(t *testing.T) {
t.Cleanup(func() { os.Chdir(wd) })
err := os.Chdir(filepath.Join(wd, "testdata/abraconfig2"))
if err != nil {
log.Fatal(err)
}
cfg := LoadAbraConfig()
wantAbraDir := os.ExpandEnv("$HOME/.abra")
if cfg.GetAbraDir() != wantAbraDir {
t.Errorf("\nwant: %s\ngot: %s", wantAbraDir, cfg.GetAbraDir())
}
})
t.Run("from env variable", func(t *testing.T) {
t.Setenv("ABRA_DIR", "foo")
cfg := LoadAbraConfig()
wantAbraDir := "foo"
if cfg.GetAbraDir() != wantAbraDir {
t.Errorf("\nwant: %s\ngot: %s", wantAbraDir, cfg.GetAbraDir())
}
})
}