check / check (push) Failing after 2s
REPO_POLICIES.md requires the module root sneak.berlin/go/<name>. go.mod, every import (rewritten with gofmt -r), the -X flags in script/build and the examples in the pkg READMEs now use the new path. go mod tidy lists go-humanize and fatih/color as direct requirements, since internal/cli imports them. This breaks anyone who fetched or imported git.eeqj.de/sneak/secret: they must switch to sneak.berlin/go/secret, which resolves to this repository. Model: opus-5-5
60 lines
1.6 KiB
Go
60 lines
1.6 KiB
Go
package secret_test
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"sneak.berlin/go/secret/internal/secret"
|
|
)
|
|
|
|
func TestDetermineStateDir_ErrorsWhenHomeDirUnavailable(t *testing.T) {
|
|
// Clear all env vars that could provide a home/config directory.
|
|
// On Darwin, os.UserHomeDir may still succeed via the password
|
|
// database, so we also test via an explicit empty-customConfigDir
|
|
// path to exercise the fallback branch.
|
|
t.Setenv(secret.EnvStateDir, "")
|
|
t.Setenv("HOME", "")
|
|
t.Setenv("XDG_CONFIG_HOME", "")
|
|
|
|
result, err := secret.DetermineStateDir("")
|
|
// On systems where both lookups fail, we must get an error.
|
|
// On systems where the OS provides a fallback (e.g. macOS pw db),
|
|
// result should still be valid (non-empty, not root-relative).
|
|
if err != nil {
|
|
// Good — the error case is handled.
|
|
return
|
|
}
|
|
|
|
if result == "/.config/"+secret.AppID || result == "" {
|
|
t.Errorf(
|
|
"DetermineStateDir returned dangerous/empty path %q without error",
|
|
result)
|
|
}
|
|
}
|
|
|
|
func TestDetermineStateDir_UsesEnvVar(t *testing.T) {
|
|
t.Setenv(secret.EnvStateDir, "/custom/state")
|
|
|
|
result, err := secret.DetermineStateDir("")
|
|
if err != nil {
|
|
t.Fatalf("unexpected error: %v", err)
|
|
}
|
|
|
|
if result != "/custom/state" {
|
|
t.Errorf("expected /custom/state, got %q", result)
|
|
}
|
|
}
|
|
|
|
func TestDetermineStateDir_UsesCustomConfigDir(t *testing.T) {
|
|
t.Setenv(secret.EnvStateDir, "")
|
|
|
|
result, err := secret.DetermineStateDir("/my/config")
|
|
if err != nil {
|
|
t.Fatalf("unexpected error: %v", err)
|
|
}
|
|
|
|
expected := "/my/config/" + secret.AppID
|
|
if result != expected {
|
|
t.Errorf("expected %q, got %q", expected, result)
|
|
}
|
|
}
|