@@ -498,22 +498,20 @@ func TestFlushBuildEdges_ResolvesAndUpsertsBoundedBatches(t *testing.T) {
498498 }
499499
500500 var resolveSizes []int
501- oldResolve := resolveBuildEdges
502- resolveBuildEdges = func (ctx context.Context , lookup edgeresolve.NodeLookup , edges []model.Edge , options edgeresolve.ResolveOptions ) ([]model.Edge , error ) {
501+ resolver := func (ctx context.Context , lookup edgeresolve.NodeLookup , edges []model.Edge , options edgeresolve.ResolveOptions ) ([]model.Edge , error ) {
503502 resolveSizes = append (resolveSizes , len (edges ))
504503 if len (edges ) > buildEdgeResolveChunkSize {
505504 t .Fatalf ("resolve batch exceeded limit: got %d want <= %d" , len (edges ), buildEdgeResolveChunkSize )
506505 }
507- return oldResolve (ctx , lookup , edges , options )
506+ return edgeresolve . ResolveWithOptions (ctx , lookup , edges , options )
508507 }
509- t .Cleanup (func () { resolveBuildEdges = oldResolve })
510508
511509 batches := []parsedBuildEdgeBatch {
512510 {relPath : "cmd/main.go" , edges : []model.Edge {{Kind : model .EdgeKindImportsFrom , FilePath : "cmd/main.go" , Line : 1 , Fingerprint : "imports_from:cmd/main.go:github.com/example/project/mcp:1" }, {Kind : model .EdgeKindCalls , FilePath : "cmd/main.go" , Line : 2 , Fingerprint : "calls:cmd/main.go:h.deps.FlowTracer.TraceFlow:2" }}},
513511 {relPath : "flows/tracer.go" , edges : []model.Edge {{Kind : model .EdgeKindImplements , FilePath : "flows/tracer.go" , Line : 7 , Fingerprint : "implements:flows/tracer.go:flows.Tracer:mcp.FlowTracer" }}},
514512 }
515513
516- svc := & GraphService {}
514+ svc := & GraphService {resolveEdges : resolver }
517515 if err := svc .flushBuildEdges (ctx , st , batches , nil , edgeresolve.ResolveOptions {}); err != nil {
518516 t .Fatalf ("flushBuildEdges: %v" , err )
519517 }
@@ -543,26 +541,24 @@ func TestFlushBuildEdges_ResolvesImplementsOnlyOnce(t *testing.T) {
543541 st .nodesByFP ["flows/tracer.go" ] = []model.Node {{ID : 30 , QualifiedName : "flows/tracer.go" , Name : "flows/tracer.go" , Kind : model .NodeKindFile , FilePath : "flows/tracer.go" , Language : "go" }, {ID : 3 , QualifiedName : "flows.Tracer" , Name : "Tracer" , Kind : model .NodeKindClass , FilePath : "flows/tracer.go" , StartLine : 7 , EndLine : 7 , Language : "go" }, {ID : 4 , QualifiedName : "flows.Tracer.TraceFlow" , Name : "TraceFlow" , Kind : model .NodeKindFunction , FilePath : "flows/tracer.go" , StartLine : 9 , EndLine : 11 , Language : "go" }}
544542
545543 var implementsSeen []int
546- oldResolve := resolveBuildEdges
547- resolveBuildEdges = func (ctx context.Context , lookup edgeresolve.NodeLookup , edges []model.Edge , options edgeresolve.ResolveOptions ) ([]model.Edge , error ) {
544+ resolver := func (ctx context.Context , lookup edgeresolve.NodeLookup , edges []model.Edge , options edgeresolve.ResolveOptions ) ([]model.Edge , error ) {
548545 count := 0
549546 for _ , edge := range edges {
550547 if edge .Kind == model .EdgeKindImplements {
551548 count ++
552549 }
553550 }
554551 implementsSeen = append (implementsSeen , count )
555- return oldResolve (ctx , lookup , edges , options )
552+ return edgeresolve . ResolveWithOptions (ctx , lookup , edges , options )
556553 }
557- t .Cleanup (func () { resolveBuildEdges = oldResolve })
558554
559555 batches := []parsedBuildEdgeBatch {
560556 {relPath : "flows/tracer.go" , edges : []model.Edge {{Kind : model .EdgeKindImplements , FilePath : "flows/tracer.go" , Line : 7 , Fingerprint : "implements:flows/tracer.go:flows.Tracer:mcp.FlowTracer" }}},
561557 {relPath : "cmd/main.go" , edges : []model.Edge {{Kind : model .EdgeKindImportsFrom , FilePath : "cmd/main.go" , Line : 1 , Fingerprint : "imports_from:cmd/main.go:github.com/example/project/mcp:1" }, {Kind : model .EdgeKindCalls , FilePath : "cmd/main.go" , Line : 2 , Fingerprint : "calls:cmd/main.go:h.deps.FlowTracer.TraceFlow:2" }}},
562558 {relPath : "cmd/main.go" , edges : []model.Edge {{Kind : model .EdgeKindContains , FilePath : "cmd/main.go" , Line : 1 , Fingerprint : "contains:cmd/main.go:main.Run" }}},
563559 }
564560
565- svc := & GraphService {}
561+ svc := & GraphService {resolveEdges : resolver }
566562 if err := svc .flushBuildEdges (ctx , st , batches , nil , edgeresolve.ResolveOptions {}); err != nil {
567563 t .Fatalf ("flushBuildEdges: %v" , err )
568564 }
@@ -2100,8 +2096,7 @@ func TestBuild_ReleasesBatchCommentStateAfterBinding(t *testing.T) {
21002096 tsCommentsNil bool
21012097 sourceNil bool
21022098 }
2103- prevHook := testBuildBatchReleaseHook
2104- testBuildBatchReleaseHook = func (batches []parsedBuildNodeBatch , idx int ) {
2099+ recordRelease := func (batches []parsedBuildNodeBatch , idx int ) {
21052100 snapshots = append (snapshots , struct {
21062101 batch int
21072102 tsCommentsNil bool
@@ -2112,15 +2107,15 @@ func TestBuild_ReleasesBatchCommentStateAfterBinding(t *testing.T) {
21122107 sourceNil : batches [idx ].sourceLines == nil ,
21132108 })
21142109 }
2115- defer func () { testBuildBatchReleaseHook = prevHook }()
21162110
21172111 fakeStore := newRecordingGraphStore (t )
21182112 svc := & GraphService {
21192113 Store : fakeStore ,
21202114 Walkers : map [string ]* treesitter.Walker {
21212115 ".go" : treesitter .NewWalker (treesitter .GoSpec ),
21222116 },
2123- Logger : slog .Default (),
2117+ Logger : slog .Default (),
2118+ onBatchRelease : recordRelease ,
21242119 }
21252120
21262121 dir := t .TempDir ()
0 commit comments