hub/internal/util/config_test.go

49 lines
1.2 KiB
Go

package util
import (
"io"
"os"
"path/filepath"
"testing"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
func TestSetupConfig(t *testing.T) {
t.Parallel()
// Check config file must exist for test cmd
cfg, err := SetupConfig("test")
require.Error(t, err)
require.Nil(t, cfg)
// Create config file for test cmd in $HOME/.cfg
dir := filepath.Join(os.Getenv("HOME"), ".cfg")
name := filepath.Join(dir, "test.yaml")
err = os.MkdirAll(dir, 0755)
require.NoError(t, err)
f, err := os.Create(name)
require.NoError(t, err)
defer os.Remove(name)
_, err = io.WriteString(f, `key1: value1`)
require.NoError(t, err)
// Check SetupConfig now succeeds
cfg, err = SetupConfig("test")
require.NoError(t, err)
require.NotNil(t, cfg)
assert.Equal(t, "value1", cfg.GetString("key1"))
// Check environment variables are also available in the config
os.Setenv("TEST_KEY2", "value2")
os.Setenv("TEST_KEY3_EXTRA", "value3")
os.Setenv("TEST_KEY4_EXTRA", "value4")
cfg, err = SetupConfig("test")
require.NoError(t, err)
assert.Equal(t, "value1", cfg.GetString("key1"))
assert.Equal(t, "value2", cfg.GetString("key2"))
assert.Equal(t, "value3", cfg.GetString("key3.extra"))
assert.Equal(t, "value4", cfg.GetString("key4-extra"))
}