PrintToVeraeTimeStamp/internal/settings/settings_test.go

48 lines
1.2 KiB
Go

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
}