1
0

default_test.go 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. package config
  2. import (
  3. "os"
  4. "path/filepath"
  5. "testing"
  6. "github.com/stretchr/testify/assert"
  7. "github.com/stretchr/testify/require"
  8. )
  9. func TestDefaultPathInDir(t *testing.T) {
  10. t.Run("prefers config.yaml when both exist", func(t *testing.T) {
  11. dir := t.TempDir()
  12. want := filepath.Join(dir, "config.yaml")
  13. other := filepath.Join(dir, "config.yml")
  14. require.NoError(t, os.WriteFile(want, []byte("a: 1"), 0644))
  15. require.NoError(t, os.WriteFile(other, []byte("a: 2"), 0644))
  16. got, err := defaultPathInDir(dir)
  17. require.NoError(t, err)
  18. assert.Equal(t, want, got)
  19. })
  20. t.Run("returns config.yaml when only it exists", func(t *testing.T) {
  21. dir := t.TempDir()
  22. want := filepath.Join(dir, "config.yaml")
  23. require.NoError(t, os.WriteFile(want, []byte("a: 1"), 0644))
  24. got, err := defaultPathInDir(dir)
  25. require.NoError(t, err)
  26. assert.Equal(t, want, got)
  27. })
  28. t.Run("falls back to config.yml when only it exists", func(t *testing.T) {
  29. dir := t.TempDir()
  30. want := filepath.Join(dir, "config.yml")
  31. require.NoError(t, os.WriteFile(want, []byte("a: 1"), 0644))
  32. got, err := defaultPathInDir(dir)
  33. require.NoError(t, err)
  34. assert.Equal(t, want, got)
  35. })
  36. t.Run("errors when neither exists and names both paths", func(t *testing.T) {
  37. dir := t.TempDir()
  38. got, err := defaultPathInDir(dir)
  39. assert.Empty(t, got)
  40. require.Error(t, err)
  41. assert.Contains(t, err.Error(), filepath.Join(dir, "config.yaml"))
  42. assert.Contains(t, err.Error(), filepath.Join(dir, "config.yml"))
  43. })
  44. }
  45. func TestDefaultPath(t *testing.T) {
  46. got, err := DefaultPath()
  47. if err != nil {
  48. ex, exErr := os.Executable()
  49. require.NoError(t, exErr)
  50. assert.Contains(t, err.Error(), filepath.Dir(ex))
  51. return
  52. }
  53. ex, err := os.Executable()
  54. require.NoError(t, err)
  55. assert.Equal(t, filepath.Dir(ex), filepath.Dir(got))
  56. assert.Contains(t, []string{"config.yaml", "config.yml"}, filepath.Base(got))
  57. }