Skip to content

Commit a8b9f66

Browse files
Girgiasarnaud-lb
andcommitted
Add stream test that loses buffer after cast
Co-authored-by: Arnaud Le Blanc <arnaud.lb@gmail.com>
1 parent 1503d70 commit a8b9f66

File tree

1 file changed

+162
-0
lines changed

1 file changed

+162
-0
lines changed
Lines changed: 162 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,162 @@
1+
--TEST--
2+
Casting a stream can lose data and needs to emit a warning
3+
--FILE--
4+
<?php
5+
$stream = popen('for i in $(seq 1 2000); do echo $i; done', 'r');
6+
sleep(2);
7+
8+
// fills the read buffer with up to 8192 bytes
9+
fgets($stream);
10+
11+
// cast $stream and read fd until eof. Print each line that was read, prefixed with "proc open stdin:"
12+
proc_open(
13+
'sed "s/^/proc open stdin:/"',
14+
[
15+
0 => $stream,
16+
],
17+
$pipes,
18+
);
19+
?>
20+
--EXPECTF--
21+
Warning: proc_open(): 8190 bytes of buffered data lost during stream conversion! in %s on line %d
22+
proc open stdin:
23+
proc open stdin:1861
24+
proc open stdin:1862
25+
proc open stdin:1863
26+
proc open stdin:1864
27+
proc open stdin:1865
28+
proc open stdin:1866
29+
proc open stdin:1867
30+
proc open stdin:1868
31+
proc open stdin:1869
32+
proc open stdin:1870
33+
proc open stdin:1871
34+
proc open stdin:1872
35+
proc open stdin:1873
36+
proc open stdin:1874
37+
proc open stdin:1875
38+
proc open stdin:1876
39+
proc open stdin:1877
40+
proc open stdin:1878
41+
proc open stdin:1879
42+
proc open stdin:1880
43+
proc open stdin:1881
44+
proc open stdin:1882
45+
proc open stdin:1883
46+
proc open stdin:1884
47+
proc open stdin:1885
48+
proc open stdin:1886
49+
proc open stdin:1887
50+
proc open stdin:1888
51+
proc open stdin:1889
52+
proc open stdin:1890
53+
proc open stdin:1891
54+
proc open stdin:1892
55+
proc open stdin:1893
56+
proc open stdin:1894
57+
proc open stdin:1895
58+
proc open stdin:1896
59+
proc open stdin:1897
60+
proc open stdin:1898
61+
proc open stdin:1899
62+
proc open stdin:1900
63+
proc open stdin:1901
64+
proc open stdin:1902
65+
proc open stdin:1903
66+
proc open stdin:1904
67+
proc open stdin:1905
68+
proc open stdin:1906
69+
proc open stdin:1907
70+
proc open stdin:1908
71+
proc open stdin:1909
72+
proc open stdin:1910
73+
proc open stdin:1911
74+
proc open stdin:1912
75+
proc open stdin:1913
76+
proc open stdin:1914
77+
proc open stdin:1915
78+
proc open stdin:1916
79+
proc open stdin:1917
80+
proc open stdin:1918
81+
proc open stdin:1919
82+
proc open stdin:1920
83+
proc open stdin:1921
84+
proc open stdin:1922
85+
proc open stdin:1923
86+
proc open stdin:1924
87+
proc open stdin:1925
88+
proc open stdin:1926
89+
proc open stdin:1927
90+
proc open stdin:1928
91+
proc open stdin:1929
92+
proc open stdin:1930
93+
proc open stdin:1931
94+
proc open stdin:1932
95+
proc open stdin:1933
96+
proc open stdin:1934
97+
proc open stdin:1935
98+
proc open stdin:1936
99+
proc open stdin:1937
100+
proc open stdin:1938
101+
proc open stdin:1939
102+
proc open stdin:1940
103+
proc open stdin:1941
104+
proc open stdin:1942
105+
proc open stdin:1943
106+
proc open stdin:1944
107+
proc open stdin:1945
108+
proc open stdin:1946
109+
proc open stdin:1947
110+
proc open stdin:1948
111+
proc open stdin:1949
112+
proc open stdin:1950
113+
proc open stdin:1951
114+
proc open stdin:1952
115+
proc open stdin:1953
116+
proc open stdin:1954
117+
proc open stdin:1955
118+
proc open stdin:1956
119+
proc open stdin:1957
120+
proc open stdin:1958
121+
proc open stdin:1959
122+
proc open stdin:1960
123+
proc open stdin:1961
124+
proc open stdin:1962
125+
proc open stdin:1963
126+
proc open stdin:1964
127+
proc open stdin:1965
128+
proc open stdin:1966
129+
proc open stdin:1967
130+
proc open stdin:1968
131+
proc open stdin:1969
132+
proc open stdin:1970
133+
proc open stdin:1971
134+
proc open stdin:1972
135+
proc open stdin:1973
136+
proc open stdin:1974
137+
proc open stdin:1975
138+
proc open stdin:1976
139+
proc open stdin:1977
140+
proc open stdin:1978
141+
proc open stdin:1979
142+
proc open stdin:1980
143+
proc open stdin:1981
144+
proc open stdin:1982
145+
proc open stdin:1983
146+
proc open stdin:1984
147+
proc open stdin:1985
148+
proc open stdin:1986
149+
proc open stdin:1987
150+
proc open stdin:1988
151+
proc open stdin:1989
152+
proc open stdin:1990
153+
proc open stdin:1991
154+
proc open stdin:1992
155+
proc open stdin:1993
156+
proc open stdin:1994
157+
proc open stdin:1995
158+
proc open stdin:1996
159+
proc open stdin:1997
160+
proc open stdin:1998
161+
proc open stdin:1999
162+
proc open stdin:2000

0 commit comments

Comments
 (0)