summaryrefslogtreecommitdiff
path: root/main_test.go
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2026-04-09 08:38:33 +0300
committerPaul Buetow <paul@buetow.org>2026-04-09 08:38:33 +0300
commit7c08fe44282c076e2470fe19a1eacff209cfa4f2 (patch)
tree65410fe3a626740a33861d93995335bb735fdece /main_test.go
parenta4d5a70aa998b315e69d7a945a57ade083505011 (diff)
Fix shared text cache cleanup
Diffstat (limited to 'main_test.go')
-rw-r--r--main_test.go116
1 files changed, 116 insertions, 0 deletions
diff --git a/main_test.go b/main_test.go
index 8d6fac8..399158a 100644
--- a/main_test.go
+++ b/main_test.go
@@ -1,6 +1,8 @@
package main
import (
+ "errors"
+ "fmt"
"os"
"path/filepath"
"strings"
@@ -113,3 +115,117 @@ func TestPrepareSharedTextLoadAllowsLongText(t *testing.T) {
t.Fatalf("expected original text to be preserved, got %d bytes", len(gotText))
}
}
+
+func TestHandleSharedTextLoadAutoLogSuccessRemovesCache(t *testing.T) {
+ cacheDir := t.TempDir()
+ cachePath := filepath.Join(cacheDir, "quicklogger-shared.txt")
+ if err := os.WriteFile(cachePath, []byte("hello"), 0o644); err != nil {
+ t.Fatalf("writing cache file: %v", err)
+ }
+
+ var infoTitle, infoMessage string
+ var resetCalls, clearCalls int
+ handleSharedTextLoad(
+ "hello",
+ true,
+ cacheDir,
+ func(string) {
+ t.Fatal("prefill should not be called in auto-log mode")
+ },
+ func() {
+ t.Fatal("focus should not be called in auto-log mode")
+ },
+ func() {
+ resetCalls++
+ },
+ func() {
+ clearCalls++
+ if err := os.Remove(cachePath); err != nil && !errors.Is(err, os.ErrNotExist) {
+ t.Fatalf("removing cache file: %v", err)
+ }
+ },
+ func(dir, text string) error {
+ if dir != cacheDir {
+ t.Fatalf("expected dir %q, got %q", cacheDir, dir)
+ }
+ if text != "hello" {
+ t.Fatalf("expected text %q, got %q", "hello", text)
+ }
+ return nil
+ },
+ func(title, message string) {
+ infoTitle = title
+ infoMessage = message
+ },
+ func(err error) {
+ t.Fatalf("unexpected auto-log error: %v", err)
+ },
+ )
+
+ if resetCalls != 1 {
+ t.Fatalf("expected resetInput to be called once, got %d", resetCalls)
+ }
+ if clearCalls != 1 {
+ t.Fatalf("expected cache cleanup once, got %d", clearCalls)
+ }
+ if infoTitle != "Logged" || infoMessage != "Shared text has been logged." {
+ t.Fatalf("unexpected info dialog: %q / %q", infoTitle, infoMessage)
+ }
+ if _, err := os.Stat(cachePath); !errors.Is(err, os.ErrNotExist) {
+ t.Fatalf("expected cache file to be removed, stat err=%v", err)
+ }
+}
+
+func TestHandleSharedTextLoadAutoLogFailureKeepsCache(t *testing.T) {
+ cacheDir := t.TempDir()
+ cachePath := filepath.Join(cacheDir, "quicklogger-shared.txt")
+ if err := os.WriteFile(cachePath, []byte("hello"), 0o644); err != nil {
+ t.Fatalf("writing cache file: %v", err)
+ }
+
+ logErr := fmt.Errorf("boom")
+ var errorCalled bool
+ var clearCalls int
+ handleSharedTextLoad(
+ "hello",
+ true,
+ cacheDir,
+ func(string) {
+ t.Fatal("prefill should not be called in auto-log mode")
+ },
+ func() {
+ t.Fatal("focus should not be called in auto-log mode")
+ },
+ func() {
+ t.Fatal("resetInput should not be called on auto-log failure")
+ },
+ func() {
+ clearCalls++
+ if err := os.Remove(cachePath); err != nil {
+ t.Fatalf("unexpected cleanup on failure: %v", err)
+ }
+ },
+ func(string, string) error {
+ return logErr
+ },
+ func(string, string) {
+ t.Fatal("info dialog should not be shown on failure")
+ },
+ func(err error) {
+ if !errors.Is(err, logErr) {
+ t.Fatalf("expected log error %v, got %v", logErr, err)
+ }
+ errorCalled = true
+ },
+ )
+
+ if !errorCalled {
+ t.Fatal("expected error dialog callback")
+ }
+ if clearCalls != 0 {
+ t.Fatalf("expected cache to remain on failure, cleanup calls=%d", clearCalls)
+ }
+ if _, err := os.Stat(cachePath); err != nil {
+ t.Fatalf("expected cache file to remain, stat err=%v", err)
+ }
+}