annotate autoindex.t @ 144:6e11354cae8a

Tests: rework stopping to make "open socket left" alerts visible. Use SIGQUIT to stop nginx to make sure relevant checks are executed. Use separate functions to stop nginx and daemons to make it possible to stop nginx before daemons.
author Maxim Dounin <mdounin@mdounin.ru>
date Wed, 15 Dec 2010 19:22:39 +0300
parents 0a2f750790c9
children afa07ae9def6
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
108
93a8f4202b16 Tests: add autoindex module tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
1 #!/usr/bin/perl
93a8f4202b16 Tests: add autoindex module tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
2
93a8f4202b16 Tests: add autoindex module tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
3 # (C) Maxim Dounin
93a8f4202b16 Tests: add autoindex module tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
4
93a8f4202b16 Tests: add autoindex module tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
5 # Tests for autoindex module.
93a8f4202b16 Tests: add autoindex module tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
6
93a8f4202b16 Tests: add autoindex module tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
7 ###############################################################################
93a8f4202b16 Tests: add autoindex module tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
8
93a8f4202b16 Tests: add autoindex module tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
9 use warnings;
93a8f4202b16 Tests: add autoindex module tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
10 use strict;
93a8f4202b16 Tests: add autoindex module tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
11
93a8f4202b16 Tests: add autoindex module tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
12 use Test::More;
93a8f4202b16 Tests: add autoindex module tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
13
93a8f4202b16 Tests: add autoindex module tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
14 BEGIN { use FindBin; chdir($FindBin::Bin); }
93a8f4202b16 Tests: add autoindex module tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
15
93a8f4202b16 Tests: add autoindex module tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
16 use lib 'lib';
93a8f4202b16 Tests: add autoindex module tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
17 use Test::Nginx;
93a8f4202b16 Tests: add autoindex module tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
18
93a8f4202b16 Tests: add autoindex module tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
19 ###############################################################################
93a8f4202b16 Tests: add autoindex module tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
20
93a8f4202b16 Tests: add autoindex module tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
21 select STDERR; $| = 1;
93a8f4202b16 Tests: add autoindex module tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
22 select STDOUT; $| = 1;
93a8f4202b16 Tests: add autoindex module tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
23
126
0a2f750790c9 Tests: add autoindex test for '?' in file name.
Maxim Dounin <mdounin@mdounin.ru>
parents: 125
diff changeset
24 my $t = Test::Nginx->new()->has(qw/http autoindex/)->plan(16)
108
93a8f4202b16 Tests: add autoindex module tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
25 ->write_file_expand('nginx.conf', <<'EOF');
93a8f4202b16 Tests: add autoindex module tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
26
93a8f4202b16 Tests: add autoindex module tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
27 %%TEST_GLOBALS%%
93a8f4202b16 Tests: add autoindex module tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
28
93a8f4202b16 Tests: add autoindex module tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
29 master_process off;
93a8f4202b16 Tests: add autoindex module tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
30 daemon off;
93a8f4202b16 Tests: add autoindex module tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
31
93a8f4202b16 Tests: add autoindex module tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
32 events {
93a8f4202b16 Tests: add autoindex module tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
33 }
93a8f4202b16 Tests: add autoindex module tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
34
93a8f4202b16 Tests: add autoindex module tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
35 http {
93a8f4202b16 Tests: add autoindex module tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
36 %%TEST_GLOBALS_HTTP%%
93a8f4202b16 Tests: add autoindex module tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
37
93a8f4202b16 Tests: add autoindex module tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
38 server {
93a8f4202b16 Tests: add autoindex module tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
39 listen 127.0.0.1:8080;
93a8f4202b16 Tests: add autoindex module tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
40 server_name localhost;
93a8f4202b16 Tests: add autoindex module tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
41
93a8f4202b16 Tests: add autoindex module tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
42 location / {
93a8f4202b16 Tests: add autoindex module tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
43 autoindex on;
93a8f4202b16 Tests: add autoindex module tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
44 }
123
8aa0dd396a83 Tests: add more autoindex tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 121
diff changeset
45 location /utf8/ {
8aa0dd396a83 Tests: add more autoindex tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 121
diff changeset
46 autoindex on;
8aa0dd396a83 Tests: add more autoindex tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 121
diff changeset
47 charset utf-8;
8aa0dd396a83 Tests: add more autoindex tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 121
diff changeset
48 }
108
93a8f4202b16 Tests: add autoindex module tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
49 }
93a8f4202b16 Tests: add autoindex module tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
50 }
93a8f4202b16 Tests: add autoindex module tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
51
93a8f4202b16 Tests: add autoindex module tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
52 EOF
93a8f4202b16 Tests: add autoindex module tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
53
93a8f4202b16 Tests: add autoindex module tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
54 my $d = $t->testdir();
93a8f4202b16 Tests: add autoindex module tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
55
93a8f4202b16 Tests: add autoindex module tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
56 mkdir("$d/test-dir");
93a8f4202b16 Tests: add autoindex module tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
57 symlink("$d/test-dir", "$d/test-dir-link");
93a8f4202b16 Tests: add autoindex module tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
58
93a8f4202b16 Tests: add autoindex module tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
59 $t->write_file('test-file', '');
93a8f4202b16 Tests: add autoindex module tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
60 symlink("$d/test-file", "$d/test-file-link");
93a8f4202b16 Tests: add autoindex module tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
61
123
8aa0dd396a83 Tests: add more autoindex tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 121
diff changeset
62 $t->write_file('test-colon:blah', '');
8aa0dd396a83 Tests: add more autoindex tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 121
diff changeset
63 $t->write_file('test-long-' . ('0' x 50), '');
8aa0dd396a83 Tests: add more autoindex tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 121
diff changeset
64 $t->write_file('test-long-' . ('>' x 50), '');
8aa0dd396a83 Tests: add more autoindex tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 121
diff changeset
65 $t->write_file('test-escape-url-%', '');
126
0a2f750790c9 Tests: add autoindex test for '?' in file name.
Maxim Dounin <mdounin@mdounin.ru>
parents: 125
diff changeset
66 $t->write_file('test-escape-url2-?', '');
123
8aa0dd396a83 Tests: add more autoindex tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 121
diff changeset
67 $t->write_file('test-escape-html-<>&', '');
8aa0dd396a83 Tests: add more autoindex tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 121
diff changeset
68
8aa0dd396a83 Tests: add more autoindex tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 121
diff changeset
69 mkdir($d . '/utf8');
8aa0dd396a83 Tests: add more autoindex tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 121
diff changeset
70 $t->write_file('utf8/test-utf8-' . ("\xd1\x84" x 3), '');
8aa0dd396a83 Tests: add more autoindex tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 121
diff changeset
71 $t->write_file('utf8/test-utf8-' . ("\xd1\x84" x 45), '');
8aa0dd396a83 Tests: add more autoindex tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 121
diff changeset
72 $t->write_file('utf8/test-utf8-<>&-' . "\xd1\x84", '');
8aa0dd396a83 Tests: add more autoindex tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 121
diff changeset
73 $t->write_file('utf8/test-utf8-<>&-' . ("\xd1\x84" x 45), '');
8aa0dd396a83 Tests: add more autoindex tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 121
diff changeset
74 $t->write_file('utf8/test-utf8-' . ("\xd1\x84" x 3) . '-' . ('>' x 45), '');
8aa0dd396a83 Tests: add more autoindex tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 121
diff changeset
75
8aa0dd396a83 Tests: add more autoindex tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 121
diff changeset
76 mkdir($d . '/test-dir-escape-<>&');
8aa0dd396a83 Tests: add more autoindex tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 121
diff changeset
77
108
93a8f4202b16 Tests: add autoindex module tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
78 $t->run();
93a8f4202b16 Tests: add autoindex module tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
79
93a8f4202b16 Tests: add autoindex module tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
80 ###############################################################################
93a8f4202b16 Tests: add autoindex module tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
81
93a8f4202b16 Tests: add autoindex module tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
82 my $r = http_get('/');
93a8f4202b16 Tests: add autoindex module tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
83
93a8f4202b16 Tests: add autoindex module tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
84 like($r, qr!href="test-file"!ms, 'file');
93a8f4202b16 Tests: add autoindex module tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
85 like($r, qr!href="test-file-link"!ms, 'symlink to file');
93a8f4202b16 Tests: add autoindex module tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
86 like($r, qr!href="test-dir/"!ms, 'directory');
93a8f4202b16 Tests: add autoindex module tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
87 like($r, qr!href="test-dir-link/"!ms, 'symlink to directory');
93a8f4202b16 Tests: add autoindex module tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
88
123
8aa0dd396a83 Tests: add more autoindex tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 121
diff changeset
89 like($r, qr!href="./test-colon:blah"!ms, 'colon not scheme');
8aa0dd396a83 Tests: add more autoindex tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 121
diff changeset
90 like($r, qr!test-long-0{37}\.\.&gt;!ms, 'long name');
8aa0dd396a83 Tests: add more autoindex tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 121
diff changeset
91
8aa0dd396a83 Tests: add more autoindex tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 121
diff changeset
92 like($r, qr!href="test-escape-url-%25"!ms, 'escaped url');
8aa0dd396a83 Tests: add more autoindex tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 121
diff changeset
93
8aa0dd396a83 Tests: add more autoindex tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 121
diff changeset
94 {
126
0a2f750790c9 Tests: add autoindex test for '?' in file name.
Maxim Dounin <mdounin@mdounin.ru>
parents: 125
diff changeset
95 local $TODO = 'not fixed yet';
0a2f750790c9 Tests: add autoindex test for '?' in file name.
Maxim Dounin <mdounin@mdounin.ru>
parents: 125
diff changeset
96
0a2f750790c9 Tests: add autoindex test for '?' in file name.
Maxim Dounin <mdounin@mdounin.ru>
parents: 125
diff changeset
97 like($r, qr!href="test-escape-url2-%3f"!ms, 'escaped ? in url');
0a2f750790c9 Tests: add autoindex test for '?' in file name.
Maxim Dounin <mdounin@mdounin.ru>
parents: 125
diff changeset
98
0a2f750790c9 Tests: add autoindex test for '?' in file name.
Maxim Dounin <mdounin@mdounin.ru>
parents: 125
diff changeset
99 }
0a2f750790c9 Tests: add autoindex test for '?' in file name.
Maxim Dounin <mdounin@mdounin.ru>
parents: 125
diff changeset
100
0a2f750790c9 Tests: add autoindex test for '?' in file name.
Maxim Dounin <mdounin@mdounin.ru>
parents: 125
diff changeset
101 {
125
f10f077a3174 Tests: autoindex utf8 handling fixed in 0.8.32.
Maxim Dounin <mdounin@mdounin.ru>
parents: 123
diff changeset
102 local $TODO = 'patch under review';
123
8aa0dd396a83 Tests: add more autoindex tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 121
diff changeset
103
8aa0dd396a83 Tests: add more autoindex tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 121
diff changeset
104 like($r, qr!test-escape-html-&lt;&gt;&amp;!ms, 'escaped html');
8aa0dd396a83 Tests: add more autoindex tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 121
diff changeset
105 like($r, qr!test-long-(&gt;){37}\.\.&gt;!ms, 'long escaped html');
8aa0dd396a83 Tests: add more autoindex tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 121
diff changeset
106
125
f10f077a3174 Tests: autoindex utf8 handling fixed in 0.8.32.
Maxim Dounin <mdounin@mdounin.ru>
parents: 123
diff changeset
107 }
f10f077a3174 Tests: autoindex utf8 handling fixed in 0.8.32.
Maxim Dounin <mdounin@mdounin.ru>
parents: 123
diff changeset
108
123
8aa0dd396a83 Tests: add more autoindex tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 121
diff changeset
109 $r = http_get('/utf8/');
8aa0dd396a83 Tests: add more autoindex tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 121
diff changeset
110
8aa0dd396a83 Tests: add more autoindex tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 121
diff changeset
111 like($r, qr!test-utf8-(\xd1\x84){3}</a>!ms, 'utf8');
8aa0dd396a83 Tests: add more autoindex tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 121
diff changeset
112 like($r, qr!test-utf8-(\xd1\x84){37}\.\.!ms, 'utf8 long');
125
f10f077a3174 Tests: autoindex utf8 handling fixed in 0.8.32.
Maxim Dounin <mdounin@mdounin.ru>
parents: 123
diff changeset
113
f10f077a3174 Tests: autoindex utf8 handling fixed in 0.8.32.
Maxim Dounin <mdounin@mdounin.ru>
parents: 123
diff changeset
114 {
f10f077a3174 Tests: autoindex utf8 handling fixed in 0.8.32.
Maxim Dounin <mdounin@mdounin.ru>
parents: 123
diff changeset
115 local $TODO = 'patch under review';
f10f077a3174 Tests: autoindex utf8 handling fixed in 0.8.32.
Maxim Dounin <mdounin@mdounin.ru>
parents: 123
diff changeset
116
123
8aa0dd396a83 Tests: add more autoindex tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 121
diff changeset
117 like($r, qr!test-utf8-&lt;&gt;&amp;-\xd1\x84</a>!ms, 'utf8 escaped');
8aa0dd396a83 Tests: add more autoindex tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 121
diff changeset
118 like($r, qr!test-utf8-&lt;&gt;&amp;-(\xd1\x84){33}\.\.!ms,
8aa0dd396a83 Tests: add more autoindex tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 121
diff changeset
119 'utf8 escaped long');
8aa0dd396a83 Tests: add more autoindex tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 121
diff changeset
120 like($r, qr!test-utf8-(\xd1\x84){3}-(&gt;){33}\.\.!ms, 'utf8 long escaped');
8aa0dd396a83 Tests: add more autoindex tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 121
diff changeset
121
8aa0dd396a83 Tests: add more autoindex tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 121
diff changeset
122 like(http_get('/test-dir-escape-<>&/'), qr!test-dir-escape-&lt;&gt;&amp;!ms,
8aa0dd396a83 Tests: add more autoindex tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 121
diff changeset
123 'escaped title');
8aa0dd396a83 Tests: add more autoindex tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 121
diff changeset
124
8aa0dd396a83 Tests: add more autoindex tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 121
diff changeset
125 }
8aa0dd396a83 Tests: add more autoindex tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 121
diff changeset
126
108
93a8f4202b16 Tests: add autoindex module tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
127 ###############################################################################