1--TEST-- 2Filter errors: user filter 3--FILE-- 4<?php 5require 'filter_errors.inc'; 6 7class test_filter0 extends php_user_filter { 8 function filter($in, $out, &$consumed, $closing) { 9 return PSFS_ERR_FATAL; 10 } 11} 12class test_filter1 extends php_user_filter { 13 function filter($in, $out, &$consumed, $closing) { 14 $bucket = stream_bucket_make_writeable($in); 15 return PSFS_ERR_FATAL; 16 } 17} 18class test_filter2 extends php_user_filter { 19 function filter($in, $out, &$consumed, $closing) { 20 while ($bucket = stream_bucket_make_writeable($in)) { 21 $consumed += $bucket->datalen; 22 stream_bucket_append($out, $bucket); 23 } 24 return PSFS_ERR_FATAL; 25 } 26} 27class test_filter3 extends php_user_filter { 28 function filter($in, $out, &$consumed, $closing) { 29 if (!$closing) { 30 $bucket = stream_bucket_new($this->stream, "42"); 31 stream_bucket_append($out, $bucket); 32 } 33 return PSFS_ERR_FATAL; 34 } 35} 36class test_filter4 extends php_user_filter { 37 function filter($in, $out, &$consumed, $closing) { 38 if (!$closing) { 39 $bucket = stream_bucket_new($this->stream, "42"); 40 } 41 return PSFS_ERR_FATAL; 42 } 43} 44 45for($i = 0; $i < 5; ++$i) { 46 echo "test_filter$i\n"; 47 var_dump(stream_filter_register("test_filter$i", "test_filter$i")); 48 filter_errors_test("test_filter$i", "42"); 49} 50 51echo "test append / read / remove\n"; 52for($i = 0; $i < 5; ++$i) { 53 echo "test_filter$i\n"; 54 $stream = fopen('php://memory', 'wb+'); 55 fwrite($stream, b"42"); 56 fseek($stream, 0, SEEK_SET); 57 $f = stream_filter_append($stream, "test_filter$i"); 58 stream_get_contents($stream); 59 stream_filter_remove($f); 60} 61 62echo "test append all / read / remove all\n"; 63$stream = fopen('php://memory', 'wb+'); 64fwrite($stream, b"42"); 65fseek($stream, 0, SEEK_SET); 66$filters = array(); 67for($i = 0; $i < 5; ++$i) { 68 echo "test_filter$i\n"; 69 $filters[] = stream_filter_append($stream, "test_filter$i"); 70} 71stream_get_contents($stream); 72foreach($filters as $filter) { 73 stream_filter_remove($filter); 74} 75 76echo "test append all / read / close\n"; 77$stream = fopen('php://memory', 'wb+'); 78fwrite($stream, b"42"); 79fseek($stream, 0, SEEK_SET); 80$filters = array(); 81for($i = 0; $i < 5; ++$i) { 82 echo "test_filter$i\n"; 83 $filters[] = stream_filter_append($stream, "test_filter$i"); 84} 85stream_get_contents($stream); 86fclose($stream); 87 88?> 89--EXPECTF-- 90test_filter0 91bool(true) 92test filtering of buffered data 93 94Warning: stream_filter_append(): Unprocessed filter buckets remaining on input brigade in %s 95 96Warning: stream_filter_append(): Filter failed to process pre-buffered data in %s 97test filtering of non buffered data 98 99Warning: stream_get_contents(): Unprocessed filter buckets remaining on input brigade in %s 100test_filter1 101bool(true) 102test filtering of buffered data 103 104Warning: stream_filter_append(): Filter failed to process pre-buffered data in %s 105test filtering of non buffered data 106test_filter2 107bool(true) 108test filtering of buffered data 109 110Warning: stream_filter_append(): Filter failed to process pre-buffered data in %s 111test filtering of non buffered data 112test_filter3 113bool(true) 114test filtering of buffered data 115 116Warning: stream_filter_append(): Unprocessed filter buckets remaining on input brigade in %s 117 118Warning: stream_filter_append(): Filter failed to process pre-buffered data in %s 119test filtering of non buffered data 120 121Warning: stream_get_contents(): Unprocessed filter buckets remaining on input brigade in %s 122test_filter4 123bool(true) 124test filtering of buffered data 125 126Warning: stream_filter_append(): Unprocessed filter buckets remaining on input brigade in %s 127 128Warning: stream_filter_append(): Filter failed to process pre-buffered data in %s 129test filtering of non buffered data 130 131Warning: stream_get_contents(): Unprocessed filter buckets remaining on input brigade in %s 132test append / read / remove 133test_filter0 134 135Warning: stream_get_contents(): Unprocessed filter buckets remaining on input brigade in %s 136 137Warning: stream_filter_remove(): Unable to flush filter, not removing in %s 138test_filter1 139 140Warning: stream_filter_remove(): Unable to flush filter, not removing in %s 141test_filter2 142 143Warning: stream_filter_remove(): Unable to flush filter, not removing in %s 144test_filter3 145 146Warning: stream_get_contents(): Unprocessed filter buckets remaining on input brigade in %s 147 148Warning: stream_filter_remove(): Unable to flush filter, not removing in %s 149test_filter4 150 151Warning: stream_get_contents(): Unprocessed filter buckets remaining on input brigade in %s 152 153Warning: stream_filter_remove(): Unable to flush filter, not removing in %s 154test append all / read / remove all 155test_filter0 156test_filter1 157test_filter2 158test_filter3 159test_filter4 160 161Warning: stream_get_contents(): Unprocessed filter buckets remaining on input brigade in %s 162 163Warning: stream_filter_remove(): Unable to flush filter, not removing in %s 164 165Warning: stream_filter_remove(): Unable to flush filter, not removing in %s 166 167Warning: stream_filter_remove(): Unable to flush filter, not removing in %s 168 169Warning: stream_filter_remove(): Unable to flush filter, not removing in %s 170 171Warning: stream_filter_remove(): Unable to flush filter, not removing in %s 172test append all / read / close 173test_filter0 174test_filter1 175test_filter2 176test_filter3 177test_filter4 178 179Warning: stream_get_contents(): Unprocessed filter buckets remaining on input brigade in %s 180