Files
sift/internal/api/pdf_review_test.go
kyleandClaude Opus 5.5 aafc1d1c28 P5a review: outlines from named destinations; pool race; fast over-limit; revalidation under the limiter; Accept pdf
- pdftext/outline: resolve named destinations through the catalog /Dests and the /Names /Dests
  tree, resolve indirect /Dest, /A and /Title, and treat reader.Null (what Dict.Get returns for
  a missing key) as absent. Before this every LaTeX and Acrobat PDF had an empty outline.
  pdftest gains NamedDests; TestOutlineNamedDestinations.
- api: pool() always goes through its Once (data race on concurrent first use);
  TestDefaultPoolConcurrentFirstUse. Revalidation of a stale cache entry counts against the
  caller/host limit.
- pdftext/runner: output over MaxText kills the child at once instead of waiting for the
  deadline; TestRunnerTooMuchTextFailsFast.
- fetch: Accept includes application/pdf;q=0.8.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-26 04:48:17 -07:00

31 lines
617 B
Go

package api
// Owner review (P5a): the default pool is built once, safely, when concurrent first requests
// arrive on a server with no pool configured (run under -race).
import (
"sync"
"testing"
)
func TestDefaultPoolConcurrentFirstUse(t *testing.T) {
s, _ := setupAPI(t, nil)
var wg sync.WaitGroup
got := make(chan any, 16)
for i := 0; i < 16; i++ {
wg.Add(1)
go func() { defer wg.Done(); got <- s.pool() }()
}
wg.Wait()
close(got)
var first any
for p := range got {
if first == nil {
first = p
}
if p != first || p == nil {
t.Fatal("pool() returned different or nil pools")
}
}
}