Files
wehub-resource-sync a06f331eb8
CI / benchmark (push) Has been skipped
install-script / posix-syntax (push) Successful in 6m1s
CI / build-onnx (push) Failing after 6m43s
init-smoke / dry-run (push) Failing after 15m57s
security / govulncheck (push) Has been cancelled
security / trivy-fs (push) Has been cancelled
CI / test (1.26, ubuntu-latest) (push) Has been cancelled
Scorecard supply-chain security / Scorecard analysis (push) Has been cancelled
CI / test (1.26, macos-latest) (push) Has been cancelled
CI / build-windows (push) Has been cancelled
CI / lint (push) Has been cancelled
install-script / powershell-syntax (push) Has been cancelled
install-script / install (macos-14) (push) Has been cancelled
install-script / install (ubuntu-latest) (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 12:33:42 +08:00

119 lines
3.7 KiB
Go

package indexer
import (
"testing"
"github.com/zzet/gortex/internal/graph"
"github.com/zzet/gortex/internal/parser"
)
func pubsubStripFixture() *parser.ExtractionResult {
return &parser.ExtractionResult{
Nodes: []*graph.Node{
{ID: "f.go", Kind: graph.KindFile},
{ID: "f.go::Pub", Kind: graph.KindFunction},
{ID: "event::log::user.login", Kind: graph.KindEvent, Meta: map[string]any{"event_kind": "log"}},
{ID: "event::pubsub::nats::orders", Kind: graph.KindEvent, Meta: map[string]any{"event_kind": "pubsub"}},
},
Edges: []*graph.Edge{
{From: "f.go", To: "f.go::Pub", Kind: graph.EdgeDefines},
{From: "f.go::Pub", To: "event::log::user.login", Kind: graph.EdgeEmits},
{From: "f.go::Pub", To: "event::pubsub::nats::orders", Kind: graph.EdgeEmits},
{From: "f.go::Pub", To: "event::pubsub::nats::orders", Kind: graph.EdgeListensOn},
},
}
}
func countNodeKind(nodes []*graph.Node, k graph.NodeKind) int {
n := 0
for _, node := range nodes {
if node.Kind == k {
n++
}
}
return n
}
func countEdgeKind(edges []*graph.Edge, k graph.EdgeKind) int {
n := 0
for _, e := range edges {
if e.Kind == k {
n++
}
}
return n
}
func TestStripObservabilityArtifacts_KeepsPubsub(t *testing.T) {
r := pubsubStripFixture()
stripObservabilityArtifacts(r)
// The log event is gone; the pub/sub topic node survives.
if got := countNodeKind(r.Nodes, graph.KindEvent); got != 1 {
t.Fatalf("expected 1 KindEvent left (pubsub), got %d", got)
}
for _, n := range r.Nodes {
if n.Kind == graph.KindEvent && !isPubsubEventNode(n) {
t.Errorf("non-pubsub event %q survived observability strip", n.ID)
}
}
// The EdgeEmits into the log event is gone; the EdgeEmits and
// EdgeListensOn into the pub/sub topic are untouched.
if got := countEdgeKind(r.Edges, graph.EdgeEmits); got != 1 {
t.Errorf("expected 1 EdgeEmits left (pubsub publish), got %d", got)
}
if got := countEdgeKind(r.Edges, graph.EdgeListensOn); got != 1 {
t.Errorf("expected EdgeListensOn untouched, got %d", got)
}
if got := countEdgeKind(r.Edges, graph.EdgeDefines); got != 1 {
t.Errorf("expected EdgeDefines untouched, got %d", got)
}
}
func TestStripPubsubArtifacts_KeepsObservability(t *testing.T) {
r := pubsubStripFixture()
stripPubsubArtifacts(r)
// The pub/sub topic node is gone; the log event survives.
if got := countNodeKind(r.Nodes, graph.KindEvent); got != 1 {
t.Fatalf("expected 1 KindEvent left (log), got %d", got)
}
for _, n := range r.Nodes {
if isPubsubEventNode(n) {
t.Errorf("pubsub event %q survived pubsub strip", n.ID)
}
}
// EdgeListensOn is pubsub-only — fully stripped. The EdgeEmits into
// the pub/sub topic is stripped; the EdgeEmits into the log event
// stays.
if got := countEdgeKind(r.Edges, graph.EdgeListensOn); got != 0 {
t.Errorf("expected 0 EdgeListensOn, got %d", got)
}
if got := countEdgeKind(r.Edges, graph.EdgeEmits); got != 1 {
t.Errorf("expected 1 EdgeEmits left (log emit), got %d", got)
}
}
func TestStripBothDomains(t *testing.T) {
r := pubsubStripFixture()
stripObservabilityArtifacts(r)
stripPubsubArtifacts(r)
if got := countNodeKind(r.Nodes, graph.KindEvent); got != 0 {
t.Errorf("expected no KindEvent nodes after both strips, got %d", got)
}
if got := countEdgeKind(r.Edges, graph.EdgeEmits); got != 0 {
t.Errorf("expected no EdgeEmits after both strips, got %d", got)
}
if got := countEdgeKind(r.Edges, graph.EdgeListensOn); got != 0 {
t.Errorf("expected no EdgeListensOn after both strips, got %d", got)
}
// Non-event structure is untouched.
if got := countEdgeKind(r.Edges, graph.EdgeDefines); got != 1 {
t.Errorf("expected EdgeDefines preserved, got %d", got)
}
if len(r.Nodes) != 2 {
t.Errorf("expected file + function nodes preserved, got %d", len(r.Nodes))
}
}