MCPcopy Create free account
hub / github.com/cel-expr/cel-go / TestRegexProgramSizeLimit

Function TestRegexProgramSizeLimit

ext/regex_test.go:419–491  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

417}
418
419func TestRegexProgramSizeLimit(t *testing.T) {
420 overloads := []struct {
421 name string
422 expr string
423 }{
424 {
425 name: "matches",
426 expr: `'a1'.matches(pat)`,
427 },
428 {
429 name: "regex.extract",
430 expr: `regex.extract('a1', pat)`,
431 },
432 {
433 name: "regex.extractAll",
434 expr: `regex.extractAll('a1', pat)`,
435 },
436 {
437 name: "regex.replace 3-arg",
438 expr: `regex.replace('a1', pat, 'x')`,
439 },
440 {
441 name: "regex.replace 4-arg",
442 expr: `regex.replace('a1', pat, 'x', 1)`,
443 },
444 }
445
446 t.Run("ExceedsLimit", func(t *testing.T) {
447 for _, tc := range overloads {
448 t.Run(tc.name, func(t *testing.T) {
449 prg, err := cel.Compile(tc.expr,
450 cel.OptionalTypes(),
451 Regex(),
452 cel.RegexProgramSizeLimit(5),
453 cel.Variable("pat", cel.StringType),
454 )
455 if err != nil {
456 t.Fatalf("cel.Compile(%s) failed: %v", tc.expr, err)
457 }
458 _, _, err = prg.Eval(map[string]any{"pat": "(a|b)*[0-9]+"})
459 if err == nil {
460 t.Fatalf("expected runtime error for regex program size exceeding limit")
461 }
462 if !strings.Contains(err.Error(), "regex program size 8 exceeds limit of 5") {
463 t.Fatalf("got error %v, expected error containing 'regex program size 8 exceeds limit of 5'", err)
464 }
465 })
466 }
467 })
468
469 t.Run("WithinLimit", func(t *testing.T) {
470 for _, tc := range overloads {
471 t.Run(tc.name, func(t *testing.T) {
472 prg, err := cel.Compile(tc.expr,
473 cel.OptionalTypes(),
474 Regex(),
475 cel.RegexProgramSizeLimit(10),
476 cel.Variable("pat", cel.StringType),

Callers

nothing calls this directly

Calls 8

CompileFunction · 0.92
OptionalTypesFunction · 0.92
RegexProgramSizeLimitFunction · 0.92
VariableFunction · 0.92
RegexFunction · 0.85
EvalMethod · 0.65
ContainsMethod · 0.65
ErrorMethod · 0.45

Tested by

no test coverage detected