annotate charset.t @ 1248:70192b1baf01

Tests: added exception test to stream_js.t using 'require'. The stream js tests introduced in edf5a3c9e36a fail on njs 0.1.14. It doesn't currently provide an easy way to check its version, whilst we are obligated to gracefully handle such cases somehow. With such an addition of 'require', now the tests are skipped instead on the previous versions.
author Sergey Kandaurov <pluknet@nginx.com>
date Tue, 21 Nov 2017 13:16:39 +0300
parents 882267679006
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
399
c6ab68c41c8c Tests: charset filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
1 #!/usr/bin/perl
c6ab68c41c8c Tests: charset filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
2
c6ab68c41c8c Tests: charset filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
3 # (C) Maxim Dounin
c6ab68c41c8c Tests: charset filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
4 # (C) Nginx, Inc.
c6ab68c41c8c Tests: charset filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
5
c6ab68c41c8c Tests: charset filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
6 # Tests for charset filter.
c6ab68c41c8c Tests: charset filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
7
c6ab68c41c8c Tests: charset filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
8 ###############################################################################
c6ab68c41c8c Tests: charset filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
9
c6ab68c41c8c Tests: charset filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
10 use warnings;
c6ab68c41c8c Tests: charset filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
11 use strict;
c6ab68c41c8c Tests: charset filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
12
c6ab68c41c8c Tests: charset filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
13 use Test::More;
c6ab68c41c8c Tests: charset filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
14
c6ab68c41c8c Tests: charset filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
15 BEGIN { use FindBin; chdir($FindBin::Bin); }
c6ab68c41c8c Tests: charset filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
16
c6ab68c41c8c Tests: charset filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
17 use lib 'lib';
c6ab68c41c8c Tests: charset filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
18 use Test::Nginx;
c6ab68c41c8c Tests: charset filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
19
c6ab68c41c8c Tests: charset filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
20 ###############################################################################
c6ab68c41c8c Tests: charset filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
21
c6ab68c41c8c Tests: charset filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
22 select STDERR; $| = 1;
c6ab68c41c8c Tests: charset filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
23 select STDOUT; $| = 1;
c6ab68c41c8c Tests: charset filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
24
c6ab68c41c8c Tests: charset filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
25 my $t = Test::Nginx->new()->has(qw/http charset proxy/)->plan(7)
c6ab68c41c8c Tests: charset filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
26 ->write_file_expand('nginx.conf', <<'EOF')->run();
c6ab68c41c8c Tests: charset filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
27
c6ab68c41c8c Tests: charset filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
28 %%TEST_GLOBALS%%
c6ab68c41c8c Tests: charset filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
29
c6ab68c41c8c Tests: charset filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
30 daemon off;
c6ab68c41c8c Tests: charset filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
31
c6ab68c41c8c Tests: charset filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
32 events {
c6ab68c41c8c Tests: charset filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
33 }
c6ab68c41c8c Tests: charset filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
34
c6ab68c41c8c Tests: charset filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
35 http {
c6ab68c41c8c Tests: charset filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
36 %%TEST_GLOBALS_HTTP%%
c6ab68c41c8c Tests: charset filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
37
c6ab68c41c8c Tests: charset filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
38 types {
c6ab68c41c8c Tests: charset filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
39 text/html html;
c6ab68c41c8c Tests: charset filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
40 text/foo foo;
c6ab68c41c8c Tests: charset filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
41 }
c6ab68c41c8c Tests: charset filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
42
c6ab68c41c8c Tests: charset filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
43 charset_map B A {
c6ab68c41c8c Tests: charset filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
44 58 59; # X -> Y
c6ab68c41c8c Tests: charset filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
45 }
c6ab68c41c8c Tests: charset filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
46
c6ab68c41c8c Tests: charset filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
47 server {
974
882267679006 Tests: simplified parallel modifications in tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 952
diff changeset
48 listen 127.0.0.1:8080;
399
c6ab68c41c8c Tests: charset filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
49 server_name localhost;
c6ab68c41c8c Tests: charset filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
50
c6ab68c41c8c Tests: charset filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
51 location / {
c6ab68c41c8c Tests: charset filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
52 charset utf-8;
c6ab68c41c8c Tests: charset filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
53 }
c6ab68c41c8c Tests: charset filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
54
c6ab68c41c8c Tests: charset filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
55 location /t3.foo {
c6ab68c41c8c Tests: charset filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
56 charset utf-8;
c6ab68c41c8c Tests: charset filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
57 charset_types text/foo;
c6ab68c41c8c Tests: charset filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
58 }
c6ab68c41c8c Tests: charset filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
59
c6ab68c41c8c Tests: charset filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
60 location /t4.any {
c6ab68c41c8c Tests: charset filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
61 charset utf-8;
c6ab68c41c8c Tests: charset filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
62 charset_types *;
c6ab68c41c8c Tests: charset filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
63 }
c6ab68c41c8c Tests: charset filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
64
c6ab68c41c8c Tests: charset filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
65 location /t5.html {
c6ab68c41c8c Tests: charset filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
66 charset $arg_c;
c6ab68c41c8c Tests: charset filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
67 }
c6ab68c41c8c Tests: charset filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
68
c6ab68c41c8c Tests: charset filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
69 location /t.html {
c6ab68c41c8c Tests: charset filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
70 charset A;
c6ab68c41c8c Tests: charset filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
71 source_charset B;
c6ab68c41c8c Tests: charset filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
72 }
c6ab68c41c8c Tests: charset filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
73
c6ab68c41c8c Tests: charset filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
74 location /proxy/ {
c6ab68c41c8c Tests: charset filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
75 charset B;
c6ab68c41c8c Tests: charset filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
76 override_charset on;
974
882267679006 Tests: simplified parallel modifications in tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 952
diff changeset
77 proxy_pass http://127.0.0.1:8080/;
399
c6ab68c41c8c Tests: charset filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
78 }
c6ab68c41c8c Tests: charset filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
79 }
c6ab68c41c8c Tests: charset filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
80 }
c6ab68c41c8c Tests: charset filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
81
c6ab68c41c8c Tests: charset filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
82 EOF
c6ab68c41c8c Tests: charset filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
83
c6ab68c41c8c Tests: charset filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
84 $t->write_file('t1.html', '');
c6ab68c41c8c Tests: charset filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
85 $t->write_file('t2.foo', '');
c6ab68c41c8c Tests: charset filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
86 $t->write_file('t3.foo', '');
c6ab68c41c8c Tests: charset filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
87 $t->write_file('t4.any', '');
c6ab68c41c8c Tests: charset filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
88 $t->write_file('t5.html', '');
c6ab68c41c8c Tests: charset filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
89 $t->write_file('t.html', 'X' x 99);
c6ab68c41c8c Tests: charset filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
90
c6ab68c41c8c Tests: charset filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
91 ###############################################################################
c6ab68c41c8c Tests: charset filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
92
c6ab68c41c8c Tests: charset filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
93 like(http_get('/t1.html'), qr!text/html; charset=utf-8!, 'charset indicated');
c6ab68c41c8c Tests: charset filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
94 like(http_get('/t2.foo'), qr!text/foo\x0d!, 'wrong type');
c6ab68c41c8c Tests: charset filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
95 like(http_get('/t3.foo'), qr!text/foo; charset=utf-8!, 'charset_types');
c6ab68c41c8c Tests: charset filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
96 like(http_get('/t4.any'), qr!text/plain; charset=utf-8!, 'charset_types any');
c6ab68c41c8c Tests: charset filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
97 like(http_get('/t5.html?c=utf-8'), qr!text/html; charset=utf-8!, 'variables');
c6ab68c41c8c Tests: charset filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
98
c6ab68c41c8c Tests: charset filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
99 like(http_get('/t.html'), qr!Y{99}!, 'recode');
c6ab68c41c8c Tests: charset filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
100 like(http_get('/proxy/t.html'), qr!X{99}!, 'override charset');
c6ab68c41c8c Tests: charset filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
101
c6ab68c41c8c Tests: charset filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
102 ###############################################################################