- promptForFilename setting (default true; env VERAE_PROMPT_FOR_FILENAME), 'verae-print config --prompt-for-filename', last Save As folder in ~/.verae/state.json - Windows helper: common file dialog (PDF filter, overwrite prompt, topmost owner) before stamping; macOS printer path: choose file name (NSSavePanel) via 'stamp -prompt-name -title'; cancel discards the job (no stamp/credit) - job.Options.OutPath: original saved at the chosen path, certificate and .verae.json next to it with the chosen base name (never overwritten) - held jobs keep the chosen path (pendingMeta.OutPath) - installer: 'Ask for a file name for each print' checkbox; removed the 'Open the user guide' finish-page checkbox; mac-key-setup asks too - auth test no longer touches the real macOS keychain (VERAE_SKIP_KEYCHAIN) - version 0.3.2
75 lines
1.8 KiB
Go
75 lines
1.8 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
|
|
}
|
|
|
|
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())
|
|
}
|
|
}
|