fix: unify DATA_DIR default to /var/lib/webhooker for all environments
All checks were successful
check / check (push) Successful in 1m4s
All checks were successful
check / check (push) Successful in 1m4s
Remove devDataDir() XDG-based logic. Both dev and prod now default DATA_DIR to /var/lib/webhooker. Update Dockerfile and README to match.
This commit is contained in:
@@ -2,7 +2,6 @@ package config
|
||||
|
||||
import (
|
||||
"os"
|
||||
"path/filepath"
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
@@ -106,53 +105,38 @@ func TestEnvironmentConfig(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestDevDataDir(t *testing.T) {
|
||||
t.Run("uses XDG_DATA_HOME when set", func(t *testing.T) {
|
||||
os.Setenv("XDG_DATA_HOME", "/custom/data")
|
||||
defer os.Unsetenv("XDG_DATA_HOME")
|
||||
func TestDefaultDataDir(t *testing.T) {
|
||||
// Verify that when DATA_DIR is unset, the default is /var/lib/webhooker
|
||||
// regardless of the environment setting.
|
||||
for _, env := range []string{"", "dev", "prod"} {
|
||||
name := env
|
||||
if name == "" {
|
||||
name = "unset"
|
||||
}
|
||||
t.Run("env="+name, func(t *testing.T) {
|
||||
if env != "" {
|
||||
os.Setenv("WEBHOOKER_ENVIRONMENT", env)
|
||||
defer os.Unsetenv("WEBHOOKER_ENVIRONMENT")
|
||||
} else {
|
||||
os.Unsetenv("WEBHOOKER_ENVIRONMENT")
|
||||
}
|
||||
os.Unsetenv("DATA_DIR")
|
||||
|
||||
got := devDataDir()
|
||||
assert.Equal(t, "/custom/data/webhooker", got)
|
||||
})
|
||||
var cfg *Config
|
||||
app := fxtest.New(
|
||||
t,
|
||||
fx.Provide(
|
||||
globals.New,
|
||||
logger.New,
|
||||
New,
|
||||
),
|
||||
fx.Populate(&cfg),
|
||||
)
|
||||
require.NoError(t, app.Err())
|
||||
app.RequireStart()
|
||||
defer app.RequireStop()
|
||||
|
||||
t.Run("falls back to HOME/.local/share/webhooker", func(t *testing.T) {
|
||||
os.Unsetenv("XDG_DATA_HOME")
|
||||
|
||||
home, err := os.UserHomeDir()
|
||||
require.NoError(t, err)
|
||||
|
||||
got := devDataDir()
|
||||
assert.Equal(t, filepath.Join(home, ".local", "share", "webhooker"), got)
|
||||
})
|
||||
|
||||
t.Run("result is always absolute", func(t *testing.T) {
|
||||
os.Unsetenv("XDG_DATA_HOME")
|
||||
|
||||
got := devDataDir()
|
||||
assert.True(t, filepath.IsAbs(got), "devDataDir() returned relative path: %s", got)
|
||||
})
|
||||
}
|
||||
|
||||
func TestDevDefaultDataDirIsAbsolute(t *testing.T) {
|
||||
// Verify that when WEBHOOKER_ENVIRONMENT=dev and DATA_DIR is unset,
|
||||
// the resulting DataDir is an absolute path.
|
||||
os.Unsetenv("WEBHOOKER_ENVIRONMENT")
|
||||
os.Unsetenv("DATA_DIR")
|
||||
|
||||
var cfg *Config
|
||||
app := fxtest.New(
|
||||
t,
|
||||
fx.Provide(
|
||||
globals.New,
|
||||
logger.New,
|
||||
New,
|
||||
),
|
||||
fx.Populate(&cfg),
|
||||
)
|
||||
require.NoError(t, app.Err())
|
||||
app.RequireStart()
|
||||
defer app.RequireStop()
|
||||
|
||||
assert.True(t, filepath.IsAbs(cfg.DataDir),
|
||||
"dev default DataDir should be absolute, got: %s", cfg.DataDir)
|
||||
assert.Equal(t, "/var/lib/webhooker", cfg.DataDir)
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user