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 ###############################################################################