Commit fc312153 authored by Geoff Simmons's avatar Geoff Simmons

test the extract() function in options.vtc

parent 642e67ad
......@@ -424,9 +424,6 @@ varnish v1 -vcl {
"(|)^$.[*+?]{5,10},\\",
"z", literal=true);
# regsub() the newlines that appear in the header, so as not
# not to disrupt the HTTP protocol (otherwise, two newlines
# are parsed as ending the response header).
set resp.http.never1 =
regsuball(re2.suball(pattern="(.*)", never_nl=true,
text={"abc
......@@ -493,3 +490,82 @@ client c3 {
expect resp.http.not_one == "znznz"
expect resp.http.one == "fail"
} -run
# extract() function
varnish v1 -vcl {
import re2 from "${vmod_topbuild}/src/.libs/libvmod_re2.so";
backend b { .host = "${bad_ip}"; }
sub vcl_recv {
return(synth(200));
}
sub vcl_synth {
set resp.http.literal =
re2.extract("(|)^$.[*+?]{5,10},\\",
"(|)^$.[*+?]{5,10},\\",
"z", literal=true);
set resp.http.never1 =
re2.extract(pattern="(.*)", never_nl=true, text={"abc
def
ghi
"}, rewrite="\1z");
set resp.http.never2 =
re2.extract("(?s)(abc.*def)", {"abc
def
"}, "z", fallback="fallback", never_nl=true);
set resp.http.never3 =
re2.extract(pattern={"(abc(.|
)def)"}, never_nl=true, text={"abc
def
"}, rewrite="z", fallback="fallback");
set resp.http.never4 =
re2.extract("(abc[^x]*def)", {"abc
def
"}, "z", "fallback", never_nl=true);
set resp.http.never5 =
re2.extract("(abc[^x]*def)", {"abczzzdef
def
"}, "\1q", never_nl=true);
set resp.http.dot1 =
re2.extract(pattern=".", dot_nl=true, text={"
"}, rewrite="z");
set resp.http.dot2 =
re2.extract(pattern="(?-s).", dot_nl=true, text={"
"}, rewrite="z", fallback="fallback");
set resp.http.dot3 =
re2.extract(pattern=".", dot_nl=true, never_nl=true, text={"
"}, rewrite="z", fallback="fallback");
set resp.http.case =
re2.extract("(?i)([wand]{5})", "A fish named *Wanda*",
"Arty", case_sensitive=true);
set resp.http.not_one =
re2.extract(pattern="^a$", posix_syntax=true,
text={"a
a
a"}, rewrite="\1z");
set resp.http.one =
re2.extract(pattern="^a$", posix_syntax=true, text={"a
a
a"}, rewrite="z", fallback="fail",one_line=true);
}
}
client c3 {
txreq
rxresp
expect resp.http.literal == "z"
expect resp.http.never1 == "abcz"
expect resp.http.never2 == "fallback"
expect resp.http.never3 == "fallback"
expect resp.http.never4 == "fallback"
expect resp.http.never5 == "abczzzdefq"
expect resp.http.dot1 == "z"
expect resp.http.dot2 == "fallback"
expect resp.http.dot3 == "fallback"
expect resp.http.case == "Arty"
expect resp.http.not_one == "z"
expect resp.http.one == "fail"
} -run
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment