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

Function TestParseExpressionIntegration

pkg/workflow/expressions_test.go:939–982  ·  view source on GitHub ↗

TestParseExpressionIntegration tests parsing and then visiting the tree

(t *testing.T)

Source from the content-addressed store, hash-verified

937
938// TestParseExpressionIntegration tests parsing and then visiting the tree
939func TestParseExpressionIntegration(t *testing.T) {
940 input := "(github.event_name == 'issues') && (github.event.action == 'opened') || !(contains(github.event.labels, 'wip'))"
941
942 // Parse the expression
943 tree, err := ParseExpression(input)
944 if err != nil {
945 t.Fatalf("ParseExpression() error: %v", err)
946 }
947
948 // Collect all literal expressions using the visitor
949 var literals []string
950 err = VisitExpressionTree(tree, func(expr *ExpressionNode) error {
951 literals = append(literals, expr.Expression)
952 return nil
953 })
954
955 if err != nil {
956 t.Errorf("VisitExpressionTree() error: %v", err)
957 }
958
959 expected := []string{
960 "github.event_name == 'issues'",
961 "github.event.action == 'opened'",
962 "contains(github.event.labels, 'wip')",
963 }
964
965 if len(literals) != len(expected) {
966 t.Errorf("Expected %d literals, got %d", len(expected), len(literals))
967 return
968 }
969
970 for i, expectedLiteral := range expected {
971 if literals[i] != expectedLiteral {
972 t.Errorf("Literal[%d] = '%s', expected '%s'", i, literals[i], expectedLiteral)
973 }
974 }
975
976 // Verify the tree structure by rendering
977 rendered := tree.Render()
978 expectedRendered := "(github.event_name == 'issues') && (github.event.action == 'opened') || !(contains(github.event.labels, 'wip'))"
979 if rendered != expectedRendered {
980 t.Errorf("Rendered = '%s', expected '%s'", rendered, expectedRendered)
981 }
982}
983
984// TestBreakLongExpression tests the expression line breaking functionality
985func TestBreakLongExpression(t *testing.T) {

Callers

nothing calls this directly

Calls 4

ParseExpressionFunction · 0.85
VisitExpressionTreeFunction · 0.85
RenderMethod · 0.65
ErrorfMethod · 0.45

Tested by

no test coverage detected