package settings import ( "os" "path/filepath" "testing" ) func TestLoadOrderAndMerge(t *testing.T) { home := t.TempDir() t.Setenv("HOME", home) t.Setenv("USERPROFILE", home) t.Setenv("VERAE_OPEN_ON_COMPLETE", "") if s, src := Load(); s.OpenOnComplete != OpenFolder || (src != "default" && src != MachinePath()) { t.Fatalf("default: %v %s", s, src) } p := UserPath("") _ = os.MkdirAll(filepath.Dir(p), 0o700) _ = os.WriteFile(p, []byte(`{"other":1}`), 0o600) if err := SetOpenOnComplete(p, "PDF"); err != nil { t.Fatal(err) } b, _ := os.ReadFile(p) if s, _ := Load(); s.OpenOnComplete != OpenPDF { t.Fatalf("user: %s", b) } if string(b) == "" || !contains(string(b), `"other": 1`) { t.Fatalf("unknown key lost: %s", b) } t.Setenv("VERAE_OPEN_ON_COMPLETE", "none") if s, src := Load(); s.OpenOnComplete != OpenNone || src != "env VERAE_OPEN_ON_COMPLETE" { t.Fatal(s, src) } if SetOpenOnComplete(p, "bogus") == nil { t.Fatal("want error") } } func contains(s, sub string) bool { return indexOf(s, sub) >= 0 } func indexOf(s, sub string) int { for i := 0; i+len(sub) <= len(s); i++ { if s[i:i+len(sub)] == sub { return i } } return -1 } func TestPromptAndLastDir(t *testing.T) { home := t.TempDir() t.Setenv("HOME", home) t.Setenv("USERPROFILE", home) t.Setenv("VERAE_PROMPT_FOR_FILENAME", "") if s, _ := Load(); !s.Prompt() { t.Fatal("default must be true") } if err := SetPromptForFilename(UserPath(""), "false"); err != nil { t.Fatal(err) } if s, _ := Load(); s.Prompt() { t.Fatal("want false") } t.Setenv("VERAE_PROMPT_FOR_FILENAME", "1") if s, _ := Load(); !s.Prompt() { t.Fatal("env override") } if LastSaveDir() != "" { t.Fatal("no state yet") } _ = SetLastSaveDir(home) if LastSaveDir() != home { t.Fatal(LastSaveDir()) } }