Files
go-otel/internal/sourcemaps/store_test.go
mats 0ed2935f04
Build and Publish / Metadata (push) Successful in 8s
Build and Publish / BuildAndDeployAmd64 (push) Failing after 36s
alot more changes
2026-09-21 18:59:13 +02:00

51 lines
1.7 KiB
Go

package sourcemaps
import (
"strings"
"testing"
)
const testMap = `{"version":3,"file":"a.js","sources":["src/a.ts"],"sourcesContent":["const a = 1\nthrow new Error('x')\n"],"names":[],"mappings":"AAAA;AACA"}`
func TestReloadFromDisk(t *testing.T) {
dir := t.TempDir()
r, _ := New(dir)
if err := r.Upload("rel1", "https://h/assets/a.js", strings.NewReader(testMap)); err != nil {
t.Fatal(err)
}
r2, _ := New(dir) // simulates a restart
if l := r2.List(); len(l) != 1 || l[0].Release != "rel1" || l[0].Source != "/assets/a.js" {
t.Fatalf("list after reload = %+v", l)
}
frames := r2.ResolveFrames("rel1", "Error: x\n at f (https://h/assets/a.js:2:1)")
if len(frames) != 1 || frames[0].Status != "mapped" || frames[0].Source != "src/a.ts" || len(frames[0].Context) == 0 {
t.Fatalf("frames = %+v", frames)
}
}
func TestLazyLoadAndEviction(t *testing.T) {
dir := t.TempDir()
r, _ := New(dir)
for _, f := range []string{"a", "b", "c"} {
if err := r.Upload("rel", "/assets/"+f+".js", strings.NewReader(testMap)); err != nil {
t.Fatal(err)
}
}
r2, _ := New(dir)
if len(r2.cache) != 0 || len(r2.List()) != 3 {
t.Fatalf("startup should index without parsing: cached=%d listed=%d", len(r2.cache), len(r2.List()))
}
r2.maxBytes = int64(len(testMap)) * 2 // room for two parsed maps
for _, f := range []string{"a", "b", "c"} {
if fr := r2.ResolveFrames("rel", "at f (https://h/assets/"+f+".js:2:1)"); len(fr) != 1 || fr[0].Status != "mapped" {
t.Fatalf("%s not resolved: %+v", f, fr)
}
}
if len(r2.cache) != 2 {
t.Fatalf("cache should hold 2 entries, has %d", len(r2.cache))
}
if r2.get(key("rel", "/assets/a.js")) == nil { // evicted, reloads from disk
t.Fatal("evicted map did not reload")
}
}