134 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			134 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
package config
 | 
						|
 | 
						|
import (
 | 
						|
	"log"
 | 
						|
	"os"
 | 
						|
	"path/filepath"
 | 
						|
	"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 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("from config file", func(t *testing.T) {
 | 
						|
		t.Cleanup(func() { os.Chdir(wd) })
 | 
						|
		err = os.Chdir(filepath.Join(wd, "testdata/abraconfig1"))
 | 
						|
		if err != nil {
 | 
						|
			log.Fatal(err)
 | 
						|
		}
 | 
						|
 | 
						|
		cfg := LoadAbraConfig()
 | 
						|
		wantAbraDir := filepath.Join(wd, "testdata/abraconfig1/foobar")
 | 
						|
		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())
 | 
						|
		}
 | 
						|
	})
 | 
						|
}
 | 
						|
 | 
						|
func TestLoadAbraConfigServersDir(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()
 | 
						|
		wantServersDir := os.ExpandEnv("$HOME/.abra/servers")
 | 
						|
		if cfg.GetServersDir() != wantServersDir {
 | 
						|
			t.Errorf("\nwant: %s\ngot:  %s", wantServersDir, cfg.GetServersDir())
 | 
						|
		}
 | 
						|
	})
 | 
						|
 | 
						|
	t.Run("from config file", func(t *testing.T) {
 | 
						|
		t.Cleanup(func() { os.Chdir(wd) })
 | 
						|
		err = os.Chdir(filepath.Join(wd, "testdata/abraconfig1"))
 | 
						|
		if err != nil {
 | 
						|
			log.Fatal(err)
 | 
						|
		}
 | 
						|
 | 
						|
		cfg := LoadAbraConfig()
 | 
						|
		log.Println(cfg)
 | 
						|
		wantServersDir := filepath.Join(wd, "testdata/abraconfig1/foobar/servers")
 | 
						|
		if cfg.GetServersDir() != wantServersDir {
 | 
						|
			t.Errorf("\nwant: %s\ngot:  %s", wantServersDir, cfg.GetServersDir())
 | 
						|
		}
 | 
						|
	})
 | 
						|
}
 |