[nginx-tests] Tests: added tests for named captures with v->set_...

Maxim Dounin mdounin at mdounin.ru
Mon Jun 8 14:59:29 UTC 2026


details:   http://freenginx.org/hg/nginx-tests/rev/bad0e9744aa3
branches:  
changeset: 2068:bad0e9744aa3
user:      Maxim Dounin <mdounin at mdounin.ru>
date:      Mon Jun 08 17:58:14 2026 +0300
description:
Tests: added tests for named captures with v->set_handler.

diffstat:

 rewrite_named_captures.t |  24 +++++++++++++++++++++++-
 1 files changed, 23 insertions(+), 1 deletions(-)

diffs (46 lines):

diff --git a/rewrite_named_captures.t b/rewrite_named_captures.t
--- a/rewrite_named_captures.t
+++ b/rewrite_named_captures.t
@@ -22,7 +22,7 @@ use Test::Nginx;
 select STDERR; $| = 1;
 select STDOUT; $| = 1;
 
-my $t = Test::Nginx->new()->has(qw/http rewrite map/)->plan(6)
+my $t = Test::Nginx->new()->has(qw/http rewrite map/)->plan(7)
 	->write_file_expand('nginx.conf', <<'EOF');
 
 %%TEST_GLOBALS%%
@@ -69,6 +69,17 @@ http {
             rewrite ^(?<arg_foo>.*) /;
             return 200 "value: $arg_foo\n";
         }
+
+        location /set_args {
+            if ($arg_foo ~ "(?<args>.*)") {}
+            proxy_pass http://127.0.0.1:8081;
+        }
+    }
+
+    server {
+        listen       127.0.0.1:8081;
+        server_name  localhost;
+        return 200 "value: $args";
     }
 
     map $uri $late {
@@ -110,4 +121,15 @@ like(http_get('/prefix?foo=arg'), qr!val
 like(http_get('/prefix/rewrite?foo=arg'), qr!value: /prefix/rewrite!,
 	'value from capture overrides arg');
 
+# when a named capture changes a variable with v->set_handler, notably $args
+# or $limit_rate, the handler should be called
+
+TODO: {
+local $TODO = 'not yet' unless $t->has_version('1.31.3');
+
+like(http_get('/set_args?foo=arg'), qr!value: arg!,
+	'variable with set_handler');
+
+}
+
 ###############################################################################


More information about the nginx-devel mailing list