# HG changeset patch # User Sergey Kandaurov # Date 1407843447 -14400 # Node ID 29ee0d2b07460f78c3235f44c9c5ab43e841c74c # Parent 183f21bbe3d62e7ccdd3a8742e2ce12af6627eba Tests: tests for rewrite "set" directive. diff --git a/rewrite_set.t b/rewrite_set.t new file mode 100644 --- /dev/null +++ b/rewrite_set.t @@ -0,0 +1,107 @@ +#!/usr/bin/perl + +# (C) Sergey Kandaurov +# (C) Nginx, Inc. + +# Tests for rewrite set. + +############################################################################### + +use warnings; +use strict; + +use Test::More; + +BEGIN { use FindBin; chdir($FindBin::Bin); } + +use lib 'lib'; +use Test::Nginx; + +############################################################################### + +select STDERR; $| = 1; +select STDOUT; $| = 1; + +my $t = Test::Nginx->new()->has(qw/http rewrite ssi/)->plan(4); + +$t->write_file_expand('nginx.conf', <<'EOF'); + +%%TEST_GLOBALS%% + +daemon off; + +events { +} + +http { + %%TEST_GLOBALS_HTTP%% + + server { + listen 127.0.0.1:8080; + server_name localhost; + + ssi on; + + location /t1 { + set $http_foo "set_foo"; + return 200 'XX'; + } + + location /t2 { + return 200 'XX'; + } + + location /t3 { + return 200 'XX'; + } + + location /t4 { + set $http_connection "bar"; + return 200 "X${http_connection}X\n"; + } + + # set in other context + location /other { + set $http_bar "set_bar"; + } + } +} + +EOF + +$t->run(); + +############################################################################### + +# prefixed variables + +TODO: { +local $TODO = 'not yet'; + +SKIP: { +skip 'leaves coredump', 2 unless $ENV{TEST_NGINX_UNSAFE}; + +like(http_get_extra('/t1.html', 'Foo: http_foo'), qr/Xset_fooX/, + 'set in this context'); +like(http_get_extra('/t2.html', 'Bar: http_bar'), qr/Xhttp_barX/, + 'set in other context'); + +} +} + +like(http_get_extra('/t3.html', 'Baz: http_baz'), qr/Xhttp_bazX/, 'not set'); + +like(http_get('/t4.html'), qr/XbarX/, 'set get in return'); + +############################################################################### + +sub http_get_extra { + my ($uri, $extra) = @_; + return http(<