返回 DeepSeek-Reasonix
close_lifecycle_test.go
根目录 / internal / taskcatalog / close_lifecycle_test.go
1 package taskcatalog
2
3 import (
4 "context"
5 "errors"
6 "path/filepath"
7 "testing"
8 "time"
9 )
10
11 func TestCloseCanBeAwaitedAfterCanceledCaller(t *testing.T) {
12 catalog, err := Open(context.Background(), filepath.Join(t.TempDir(), "tasks.sqlite"))
13 if err != nil {
14 t.Fatalf("open: %v", err)
15 }
16 canceled, cancel := context.WithCancel(context.Background())
17 cancel()
18 if err := catalog.Close(canceled); err != nil && !errors.Is(err, context.Canceled) {
19 t.Fatalf("first close: %v", err)
20 }
21 ctx, stop := context.WithTimeout(context.Background(), 5*time.Second)
22 defer stop()
23 if err := catalog.Close(ctx); err != nil {
24 t.Fatalf("await eventual close: %v", err)
25 }
26 if err := catalog.db.Ping(); err == nil {
27 t.Fatal("database remained open after close completion")
28 }
29 }
30
30 lines GO