Mercurial > hg > nginx-tests
annotate stream_set.t @ 1905:f35824e75b66
Tests: fixed reading QUIC streams on Perl < 5.24.
The parse_stream() routine has had a missing explicit return if there were no
streams received. In Perl < 5.24 this used to return no value, or an empty
array in the list context. In modern Perl this returns an empty value, or an
array of 1 element, which made the check for last index of the returned array
work rather by accident.
The fix is to return explicitly and to check the array size in callers instead.
author | Sergey Kandaurov <pluknet@nginx.com> |
---|---|
date | Tue, 06 Jun 2023 18:50:07 +0400 |
parents | 5ac6efbe5552 |
children |
rev | line source |
---|---|
1593
a328109be893
Tests: stream set tests.
Vladimir Kokshenev <v.kokshenev@f5.com>
parents:
diff
changeset
|
1 #!/usr/bin/perl |
a328109be893
Tests: stream set tests.
Vladimir Kokshenev <v.kokshenev@f5.com>
parents:
diff
changeset
|
2 |
a328109be893
Tests: stream set tests.
Vladimir Kokshenev <v.kokshenev@f5.com>
parents:
diff
changeset
|
3 # (C) Vladimir Kokshenev |
a328109be893
Tests: stream set tests.
Vladimir Kokshenev <v.kokshenev@f5.com>
parents:
diff
changeset
|
4 # (C) Nginx, Inc. |
a328109be893
Tests: stream set tests.
Vladimir Kokshenev <v.kokshenev@f5.com>
parents:
diff
changeset
|
5 |
a328109be893
Tests: stream set tests.
Vladimir Kokshenev <v.kokshenev@f5.com>
parents:
diff
changeset
|
6 # Tests for stream set directive. |
a328109be893
Tests: stream set tests.
Vladimir Kokshenev <v.kokshenev@f5.com>
parents:
diff
changeset
|
7 |
a328109be893
Tests: stream set tests.
Vladimir Kokshenev <v.kokshenev@f5.com>
parents:
diff
changeset
|
8 ############################################################################### |
a328109be893
Tests: stream set tests.
Vladimir Kokshenev <v.kokshenev@f5.com>
parents:
diff
changeset
|
9 |
a328109be893
Tests: stream set tests.
Vladimir Kokshenev <v.kokshenev@f5.com>
parents:
diff
changeset
|
10 use warnings; |
a328109be893
Tests: stream set tests.
Vladimir Kokshenev <v.kokshenev@f5.com>
parents:
diff
changeset
|
11 use strict; |
a328109be893
Tests: stream set tests.
Vladimir Kokshenev <v.kokshenev@f5.com>
parents:
diff
changeset
|
12 |
a328109be893
Tests: stream set tests.
Vladimir Kokshenev <v.kokshenev@f5.com>
parents:
diff
changeset
|
13 use Test::More; |
a328109be893
Tests: stream set tests.
Vladimir Kokshenev <v.kokshenev@f5.com>
parents:
diff
changeset
|
14 |
a328109be893
Tests: stream set tests.
Vladimir Kokshenev <v.kokshenev@f5.com>
parents:
diff
changeset
|
15 BEGIN { use FindBin; chdir($FindBin::Bin); } |
a328109be893
Tests: stream set tests.
Vladimir Kokshenev <v.kokshenev@f5.com>
parents:
diff
changeset
|
16 |
a328109be893
Tests: stream set tests.
Vladimir Kokshenev <v.kokshenev@f5.com>
parents:
diff
changeset
|
17 use lib 'lib'; |
a328109be893
Tests: stream set tests.
Vladimir Kokshenev <v.kokshenev@f5.com>
parents:
diff
changeset
|
18 use Test::Nginx; |
a328109be893
Tests: stream set tests.
Vladimir Kokshenev <v.kokshenev@f5.com>
parents:
diff
changeset
|
19 use Test::Nginx::Stream qw/ stream /; |
a328109be893
Tests: stream set tests.
Vladimir Kokshenev <v.kokshenev@f5.com>
parents:
diff
changeset
|
20 |
a328109be893
Tests: stream set tests.
Vladimir Kokshenev <v.kokshenev@f5.com>
parents:
diff
changeset
|
21 ############################################################################### |
a328109be893
Tests: stream set tests.
Vladimir Kokshenev <v.kokshenev@f5.com>
parents:
diff
changeset
|
22 |
a328109be893
Tests: stream set tests.
Vladimir Kokshenev <v.kokshenev@f5.com>
parents:
diff
changeset
|
23 select STDERR; $| = 1; |
a328109be893
Tests: stream set tests.
Vladimir Kokshenev <v.kokshenev@f5.com>
parents:
diff
changeset
|
24 select STDOUT; $| = 1; |
a328109be893
Tests: stream set tests.
Vladimir Kokshenev <v.kokshenev@f5.com>
parents:
diff
changeset
|
25 |
1693
5ac6efbe5552
Tests: removed TODO and try_run() checks for legacy versions.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1609
diff
changeset
|
26 my $t = Test::Nginx->new() |
5ac6efbe5552
Tests: removed TODO and try_run() checks for legacy versions.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1609
diff
changeset
|
27 ->has(qw/stream stream_return stream_map stream_set/); |
1593
a328109be893
Tests: stream set tests.
Vladimir Kokshenev <v.kokshenev@f5.com>
parents:
diff
changeset
|
28 |
a328109be893
Tests: stream set tests.
Vladimir Kokshenev <v.kokshenev@f5.com>
parents:
diff
changeset
|
29 $t->write_file_expand('nginx.conf', <<'EOF'); |
a328109be893
Tests: stream set tests.
Vladimir Kokshenev <v.kokshenev@f5.com>
parents:
diff
changeset
|
30 |
a328109be893
Tests: stream set tests.
Vladimir Kokshenev <v.kokshenev@f5.com>
parents:
diff
changeset
|
31 %%TEST_GLOBALS%% |
a328109be893
Tests: stream set tests.
Vladimir Kokshenev <v.kokshenev@f5.com>
parents:
diff
changeset
|
32 |
a328109be893
Tests: stream set tests.
Vladimir Kokshenev <v.kokshenev@f5.com>
parents:
diff
changeset
|
33 daemon off; |
a328109be893
Tests: stream set tests.
Vladimir Kokshenev <v.kokshenev@f5.com>
parents:
diff
changeset
|
34 |
a328109be893
Tests: stream set tests.
Vladimir Kokshenev <v.kokshenev@f5.com>
parents:
diff
changeset
|
35 events { |
a328109be893
Tests: stream set tests.
Vladimir Kokshenev <v.kokshenev@f5.com>
parents:
diff
changeset
|
36 } |
a328109be893
Tests: stream set tests.
Vladimir Kokshenev <v.kokshenev@f5.com>
parents:
diff
changeset
|
37 |
a328109be893
Tests: stream set tests.
Vladimir Kokshenev <v.kokshenev@f5.com>
parents:
diff
changeset
|
38 stream { |
1609
f3ba4c74de31
Tests: added TEST_GLOBALS_STREAM variable support.
Andrei Belov <defan@nginx.com>
parents:
1593
diff
changeset
|
39 %%TEST_GLOBALS_STREAM%% |
f3ba4c74de31
Tests: added TEST_GLOBALS_STREAM variable support.
Andrei Belov <defan@nginx.com>
parents:
1593
diff
changeset
|
40 |
1593
a328109be893
Tests: stream set tests.
Vladimir Kokshenev <v.kokshenev@f5.com>
parents:
diff
changeset
|
41 map 0 $map_var { |
a328109be893
Tests: stream set tests.
Vladimir Kokshenev <v.kokshenev@f5.com>
parents:
diff
changeset
|
42 default "original"; |
a328109be893
Tests: stream set tests.
Vladimir Kokshenev <v.kokshenev@f5.com>
parents:
diff
changeset
|
43 } |
a328109be893
Tests: stream set tests.
Vladimir Kokshenev <v.kokshenev@f5.com>
parents:
diff
changeset
|
44 |
a328109be893
Tests: stream set tests.
Vladimir Kokshenev <v.kokshenev@f5.com>
parents:
diff
changeset
|
45 server { |
a328109be893
Tests: stream set tests.
Vladimir Kokshenev <v.kokshenev@f5.com>
parents:
diff
changeset
|
46 listen 127.0.0.1:8082; |
a328109be893
Tests: stream set tests.
Vladimir Kokshenev <v.kokshenev@f5.com>
parents:
diff
changeset
|
47 return $map_var:$set_var; |
a328109be893
Tests: stream set tests.
Vladimir Kokshenev <v.kokshenev@f5.com>
parents:
diff
changeset
|
48 |
a328109be893
Tests: stream set tests.
Vladimir Kokshenev <v.kokshenev@f5.com>
parents:
diff
changeset
|
49 set $set_var $map_var; |
a328109be893
Tests: stream set tests.
Vladimir Kokshenev <v.kokshenev@f5.com>
parents:
diff
changeset
|
50 set $map_var "new"; |
a328109be893
Tests: stream set tests.
Vladimir Kokshenev <v.kokshenev@f5.com>
parents:
diff
changeset
|
51 } |
a328109be893
Tests: stream set tests.
Vladimir Kokshenev <v.kokshenev@f5.com>
parents:
diff
changeset
|
52 |
a328109be893
Tests: stream set tests.
Vladimir Kokshenev <v.kokshenev@f5.com>
parents:
diff
changeset
|
53 server { |
a328109be893
Tests: stream set tests.
Vladimir Kokshenev <v.kokshenev@f5.com>
parents:
diff
changeset
|
54 listen 127.0.0.1:8083; |
a328109be893
Tests: stream set tests.
Vladimir Kokshenev <v.kokshenev@f5.com>
parents:
diff
changeset
|
55 return $set_var; |
a328109be893
Tests: stream set tests.
Vladimir Kokshenev <v.kokshenev@f5.com>
parents:
diff
changeset
|
56 } |
a328109be893
Tests: stream set tests.
Vladimir Kokshenev <v.kokshenev@f5.com>
parents:
diff
changeset
|
57 } |
a328109be893
Tests: stream set tests.
Vladimir Kokshenev <v.kokshenev@f5.com>
parents:
diff
changeset
|
58 |
a328109be893
Tests: stream set tests.
Vladimir Kokshenev <v.kokshenev@f5.com>
parents:
diff
changeset
|
59 EOF |
a328109be893
Tests: stream set tests.
Vladimir Kokshenev <v.kokshenev@f5.com>
parents:
diff
changeset
|
60 |
1693
5ac6efbe5552
Tests: removed TODO and try_run() checks for legacy versions.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1609
diff
changeset
|
61 $t->run()->plan(2); |
1593
a328109be893
Tests: stream set tests.
Vladimir Kokshenev <v.kokshenev@f5.com>
parents:
diff
changeset
|
62 |
a328109be893
Tests: stream set tests.
Vladimir Kokshenev <v.kokshenev@f5.com>
parents:
diff
changeset
|
63 ############################################################################### |
a328109be893
Tests: stream set tests.
Vladimir Kokshenev <v.kokshenev@f5.com>
parents:
diff
changeset
|
64 |
a328109be893
Tests: stream set tests.
Vladimir Kokshenev <v.kokshenev@f5.com>
parents:
diff
changeset
|
65 is(stream('127.0.0.1:' . port(8082))->read(), 'new:original', 'set'); |
a328109be893
Tests: stream set tests.
Vladimir Kokshenev <v.kokshenev@f5.com>
parents:
diff
changeset
|
66 is(stream('127.0.0.1:' . port(8083))->read(), '', 'uninitialized variable'); |
a328109be893
Tests: stream set tests.
Vladimir Kokshenev <v.kokshenev@f5.com>
parents:
diff
changeset
|
67 |
a328109be893
Tests: stream set tests.
Vladimir Kokshenev <v.kokshenev@f5.com>
parents:
diff
changeset
|
68 ############################################################################### |