MCPcopy Create free account
hub / github.com/github/gh-aw / TestVisitExpressionTree

Function TestVisitExpressionTree

pkg/workflow/expressions_test.go:883–921  ·  view source on GitHub ↗

TestVisitExpressionTree tests the tree visitor functionality

(t *testing.T)

Source from the content-addressed store, hash-verified

881
882// TestVisitExpressionTree tests the tree visitor functionality
883func TestVisitExpressionTree(t *testing.T) {
884 // Create a complex expression tree
885 expr1 := &ExpressionNode{Expression: "github.event_name == 'issues'"}
886 expr2 := &ExpressionNode{Expression: "github.event.action == 'opened'"}
887 expr3 := &ExpressionNode{Expression: "github.event.pull_request.draft == true"}
888
889 // Build tree: (expr1 && expr2) || !expr3
890 andNode := &AndNode{Left: expr1, Right: expr2}
891 notNode := &NotNode{Child: expr3}
892 orNode := &OrNode{Left: andNode, Right: notNode}
893
894 // Collect all literal expressions
895 var collected []string
896 err := VisitExpressionTree(orNode, func(expr *ExpressionNode) error {
897 collected = append(collected, expr.Expression)
898 return nil
899 })
900
901 if err != nil {
902 t.Errorf("VisitExpressionTree() unexpected error: %v", err)
903 }
904
905 expected := []string{
906 "github.event_name == 'issues'",
907 "github.event.action == 'opened'",
908 "github.event.pull_request.draft == true",
909 }
910
911 if len(collected) != len(expected) {
912 t.Errorf("VisitExpressionTree() collected %d expressions, expected %d", len(collected), len(expected))
913 return
914 }
915
916 for i, expr := range expected {
917 if collected[i] != expr {
918 t.Errorf("VisitExpressionTree() collected[%d] = '%s', expected '%s'", i, collected[i], expr)
919 }
920 }
921}
922
923// TestVisitExpressionTreeWithError tests error handling in tree visitor
924func TestVisitExpressionTreeWithError(t *testing.T) {

Callers

nothing calls this directly

Calls 2

VisitExpressionTreeFunction · 0.85
ErrorfMethod · 0.45

Tested by

no test coverage detected