mirror of
https://github.com/golang/go
synced 2024-11-12 10:00:25 -07:00
regexp: fix TestOnePassCutoff
The stack blowout can no longer happen, but we can still test that too-complex regexps are rejected. Replacement for CL 162770043. LGTM=iant, r R=r, iant CC=bradfitz, golang-codereviews https://golang.org/cl/162860043
This commit is contained in:
parent
0f022fdd52
commit
22be4bfdbf
@ -6,6 +6,7 @@ package regexp
|
||||
|
||||
import (
|
||||
"reflect"
|
||||
"regexp/syntax"
|
||||
"strings"
|
||||
"testing"
|
||||
)
|
||||
@ -473,12 +474,19 @@ func TestSplit(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
// This ran out of stack before issue 7608 was fixed.
|
||||
// Check that one-pass cutoff does trigger.
|
||||
func TestOnePassCutoff(t *testing.T) {
|
||||
if testing.Short() {
|
||||
t.Skip("Skipping in short mode")
|
||||
re, err := syntax.Parse(`^x{1,1000}y{1,1000}$`, syntax.Perl)
|
||||
if err != nil {
|
||||
t.Fatalf("parse: %v", err)
|
||||
}
|
||||
p, err := syntax.Compile(re.Simplify())
|
||||
if err != nil {
|
||||
t.Fatalf("compile: %v", err)
|
||||
}
|
||||
if compileOnePass(p) != notOnePass {
|
||||
t.Fatalf("makeOnePass succeeded; wanted notOnePass")
|
||||
}
|
||||
MustCompile(`^(?:x{1,1000}){1,1000}$`)
|
||||
}
|
||||
|
||||
func BenchmarkLiteral(b *testing.B) {
|
||||
|
Loading…
Reference in New Issue
Block a user