Mercurial > hg > nginx-tests
comparison sub_filter_perl.t @ 314:eb6f293b512b
Tests: improve sub_filter tests.
author | Maxim Dounin <mdounin@mdounin.ru> |
---|---|
date | Mon, 22 Jul 2013 17:22:57 +0400 |
parents | 6bee817c9e97 |
children | 03975bffc368 |
comparison
equal
deleted
inserted
replaced
313:9daf28f20766 | 314:eb6f293b512b |
---|---|
21 ############################################################################### | 21 ############################################################################### |
22 | 22 |
23 select STDERR; $| = 1; | 23 select STDERR; $| = 1; |
24 select STDOUT; $| = 1; | 24 select STDOUT; $| = 1; |
25 | 25 |
26 my $t = Test::Nginx->new()->has(qw/http sub perl/)->plan(9) | 26 my $t = Test::Nginx->new()->has(qw/http sub perl/)->plan(22) |
27 ->write_file_expand('nginx.conf', <<'EOF'); | 27 ->write_file_expand('nginx.conf', <<'EOF'); |
28 | 28 |
29 %%TEST_GLOBALS%% | 29 %%TEST_GLOBALS%% |
30 | 30 |
31 daemon off; | 31 daemon off; |
66 $r->print($r->variable("arg_a")); | 66 $r->print($r->variable("arg_a")); |
67 $r->print($r->variable("arg_b")); | 67 $r->print($r->variable("arg_b")); |
68 return OK; | 68 return OK; |
69 }'; | 69 }'; |
70 } | 70 } |
71 | |
72 location /short { | |
73 sub_filter ab _replaced; | |
74 perl 'sub { | |
75 my $r = shift; | |
76 $r->send_http_header("text/html"); | |
77 return OK if $r->header_only; | |
78 $r->print($r->variable("arg_a")); | |
79 $r->print($r->variable("arg_b")); | |
80 return OK; | |
81 }'; | |
82 } | |
71 } | 83 } |
72 } | 84 } |
73 | 85 |
74 EOF | 86 EOF |
75 | 87 |
83 like(http_get('/multi?a=a&b=aaab'), qr/^aa_replaced$/m, 'aab in a + aaab'); | 95 like(http_get('/multi?a=a&b=aaab'), qr/^aa_replaced$/m, 'aab in a + aaab'); |
84 | 96 |
85 TODO: { | 97 TODO: { |
86 local $TODO = 'not yet'; | 98 local $TODO = 'not yet'; |
87 | 99 |
88 like(http_get('/multi?a=a&b=aab'), qr/a_replaced/, 'aab in a + aab'); | 100 like(http_get('/multi?a=a&b=aab'), qr/^a_replaced$/m, 'aab in a + aab'); |
89 like(http_get('/multi?a=a&b=aaaab'), qr/aaa_replaced/, 'aab in a + aaaab'); | 101 like(http_get('/multi?a=a&b=aaaab'), qr/^aaa_replaced$/m, 'aab in a + aaaab'); |
90 | 102 |
91 } | 103 } |
92 | 104 |
93 TODO: { | 105 TODO: { |
94 local $TODO = 'not yet'; | 106 local $TODO = 'not yet'; |
95 | 107 |
96 like(http_get('/multi?a=aa&b=ab'), qr/a_replaced/, 'aab in aa + ab'); | 108 like(http_get('/multi?a=aa&b=ab'), qr/^a_replaced$/m, 'aab in aa + ab'); |
97 like(http_get('/multi?a=aa&b=aab'), qr/aa_replaced/, 'aab in aa + aab'); | 109 like(http_get('/multi?a=aa&b=aab'), qr/^aa_replaced$/m, 'aab in aa + aab'); |
98 like(http_get('/multi?a=aa&b=aaab'), qr/aaa_replaced/, 'aab in aa + aaab'); | 110 like(http_get('/multi?a=aa&b=aaab'), qr/^aaa_replaced$/m, 'aab in aa + aaab'); |
99 | 111 |
100 } | 112 } |
101 | 113 |
102 like(http_get('/multi?a=aa&b=aaaab'), qr/aaaa_replaced/, 'aab in aa + aaaab'); | 114 like(http_get('/multi?a=aa&b=aaaab'), qr/^aaaa_replaced$/m, 'aab in aa + aaaab'); |
115 | |
116 # full backtracking | |
117 | |
118 like(http_get('/multi?a=aa&b=xaaab'), qr/^aaxa_replaced$/m, 'aab in aa + xaaab'); | |
119 like(http_get('/multi?a=aa&b=axaaab'), qr/^aaaxa_replaced$/m, | |
120 'aab in aa + axaaab'); | |
121 like(http_get('/multi?a=aa&b=aaxaaab'), qr/^aaaaxa_replaced$/m, | |
122 'aab in aa + aaxaaab'); | |
123 | |
124 # short pattern | |
125 | |
126 like(http_get('/short?a=a&b=b'), qr/^_replaced$/m, 'ab in a + b'); | |
127 | |
128 TODO: { | |
129 local $TODO = 'not yet'; | |
130 | |
131 like(http_get('/short?a=a&b=ab'), qr/^a_replaced$/m, 'ab in a + ab'); | |
132 | |
133 } | |
134 | |
135 like(http_get('/short?a=a&b=aab'), qr/^aa_replaced$/m, 'ab in a + aab'); | |
136 like(http_get('/short?a=a&b=aaab'), qr/^aaa_replaced$/m, 'ab in a + aaab'); | |
137 like(http_get('/short?a=a&b=aaaab'), qr/^aaaa_replaced$/m, 'ab in a + aaaab'); | |
138 | |
139 like(http_get('/short?a=aa&b=b'), qr/^a_replaced$/m, 'ab in aa + b'); | |
140 | |
141 TODO: { | |
142 local $TODO = 'not yet'; | |
143 | |
144 like(http_get('/short?a=aa&b=ab'), qr/^aa_replaced$/m, 'ab in aa + ab'); | |
145 | |
146 } | |
147 | |
148 like(http_get('/short?a=aa&b=aab'), qr/^aaa_replaced$/m, 'ab in aa + aab'); | |
149 like(http_get('/short?a=aa&b=aaab'), qr/^aaaa_replaced$/m, 'ab in aa + aaab'); | |
150 like(http_get('/short?a=aa&b=aaaab'), qr/^aaaaa_replaced$/m, 'ab in aa + aaaab'); | |
103 | 151 |
104 ############################################################################### | 152 ############################################################################### |