cellog Wed, 29 Jul 2009 10:06:55 +0000 Revision: http://svn.php.net/viewvc?view=revision&revision=286503
Log: sync run-tests.php with revision 286499 changes making php 6 tests with EXPECTF that can have arbitrary binary data in output work Changed paths: U php/php-src/branches/PHP_5_2/run-tests.php U php/php-src/branches/PHP_5_3/run-tests.php
Modified: php/php-src/branches/PHP_5_2/run-tests.php =================================================================== --- php/php-src/branches/PHP_5_2/run-tests.php 2009-07-29 10:05:12 UTC (rev 286502) +++ php/php-src/branches/PHP_5_2/run-tests.php 2009-07-29 10:06:55 UTC (rev 286503) @@ -1023,7 +1023,7 @@ { global $leak_check, $cwd; - $data = ''; + $data = b''; $bin_env = array(); foreach((array)$env as $key => $value) { @@ -1059,23 +1059,23 @@ break; } else if ($n === 0) { /* timed out */ - $data .= "\n ** ERROR: process timed out **\n"; + $data .= b"\n ** ERROR: process timed out **\n"; proc_terminate($proc); return $data; } else if ($n > 0) { - $line = fread($pipes[1], 8192); + $line = (binary) fread($pipes[1], 8192); if (strlen($line) == 0) { /* EOF */ break; } - $data .= (binary) $line; + $data .= $line; } } $stat = proc_get_status($proc); if ($stat['signaled']) { - $data .= "\nTermsig=" . $stat['stopsig']; + $data .= b"\nTermsig=" . $stat['stopsig']; } $code = proc_close($proc); @@ -1140,7 +1140,6 @@ global $leak_check, $temp_source, $temp_target, $cfg, $environment; global $no_clean; global $valgrind_version; - $temp_filenames = null; $org_file = $file; @@ -1649,7 +1648,7 @@ COMMAND $cmd "; - $out = system_with_timeout($cmd, $env, isset($section_text['STDIN']) ? $section_text['STDIN'] : null); + $out = (binary) system_with_timeout($cmd, $env, isset($section_text['STDIN']) ? $section_text['STDIN'] : null); if (array_key_exists('CLEAN', $section_text) && (!$no_clean || $cfg['keep']['clean'])) { @@ -1686,19 +1685,19 @@ } // Does the output match what is expected? - $output = preg_replace("/\r\n/", "\n", trim($out)); + $output = preg_replace(b"/\r\n/", b"\n", trim($out)); /* when using CGI, strip the headers from the output */ - $headers = ""; + $headers = b""; - if (isset($old_php) && preg_match("/^(.*?)\r?\n\r?\n(.*)/s", $out, $match)) { + if (isset($old_php) && preg_match(b"/^(.*?)\r?\n\r?\n(.*)/s", $out, $match)) { $output = trim($match[2]); - $rh = preg_split("/[\n\r]+/", $match[1]); + $rh = preg_split(b"/[\n\r]+/", $match[1]); $headers = array(); foreach ($rh as $line) { - if (strpos($line, ':') !== false) { - $line = explode(':', $line, 2); + if (strpos($line, b':') !== false) { + $line = explode(b':', $line, 2); $headers[trim($line[0])] = trim($line[1]); } } @@ -1709,13 +1708,13 @@ if (isset($section_text['EXPECTHEADERS'])) { $want = array(); $wanted_headers = array(); - $lines = preg_split("/[\n\r]+/", $section_text['EXPECTHEADERS']); + $lines = preg_split(b"/[\n\r]+/", (binary) $section_text['EXPECTHEADERS']); foreach($lines as $line) { - if (strpos($line, ':') !== false) { - $line = explode(':', $line, 2); + if (strpos($line, b':') !== false) { + $line = explode(b':', $line, 2); $want[trim($line[0])] = trim($line[1]); - $wanted_headers[] = trim($line[0]) . ': ' . trim($line[1]); + $wanted_headers[] = trim($line[0]) . b': ' . trim($line[1]); } } @@ -1727,7 +1726,7 @@ if (isset($org_headers[$k])) { $headers = $org_headers[$k]; - $output_headers[] = $k . ': ' . $org_headers[$k]; + $output_headers[] = $k . b': ' . $org_headers[$k]; } if (!isset($org_headers[$k]) || $org_headers[$k] != $v) { @@ -1736,9 +1735,9 @@ } ksort($wanted_headers); - $wanted_headers = join("\n", $wanted_headers); + $wanted_headers = join(b"\n", $wanted_headers); ksort($output_headers); - $output_headers = join("\n", $output_headers); + $output_headers = join(b"\n", $output_headers); } show_file_block('out', $output); @@ -1752,13 +1751,13 @@ } show_file_block('exp', $wanted); - $wanted_re = preg_replace('/\r\n/', "\n", $wanted); + $wanted_re = preg_replace(b'/\r\n/', b"\n", $wanted); if (isset($section_text['EXPECTF'])) { // do preg_quote, but miss out any %r delimited sections - $temp = ""; - $r = "%r"; + $temp = b""; + $r = b"%r"; $startOffset = 0; $length = strlen($wanted_re); while($startOffset < $length) { @@ -1775,45 +1774,45 @@ $start = $end = $length; } // quote a non re portion of the string - $temp = $temp . preg_quote(substr($wanted_re, $startOffset, ($start - $startOffset)), '/'); + $temp = $temp . preg_quote(substr($wanted_re, $startOffset, ($start - $startOffset)), b'/'); // add the re unquoted. - $temp = $temp . '(' . substr($wanted_re, $start+2, ($end - $start-2)). ')'; + $temp = $temp . b'(' . substr($wanted_re, $start+2, ($end - $start-2)). b')'; $startOffset = $end + 2; } $wanted_re = $temp; $wanted_re = str_replace( - array('%binary_string_optional%'), - version_compare(PHP_VERSION, '6.0.0-dev') == -1 ? 'string' : 'binary string', + array(b'%binary_string_optional%'), + version_compare(PHP_VERSION, '6.0.0-dev') == -1 ? b'string' : b'binary string', $wanted_re ); $wanted_re = str_replace( - array('%unicode_string_optional%'), - version_compare(PHP_VERSION, '6.0.0-dev') == -1 ? 'string' : 'Unicode string', + array(b'%unicode_string_optional%'), + version_compare(PHP_VERSION, '6.0.0-dev') == -1 ? b'string' : b'Unicode string', $wanted_re ); $wanted_re = str_replace( - array('%unicode\|string%', '%string\|unicode%'), - version_compare(PHP_VERSION, '6.0.0-dev') == -1 ? 'string' : 'unicode', + array(b'%unicode\|string%', b'%string\|unicode%'), + version_compare(PHP_VERSION, '6.0.0-dev') == -1 ? b'string' : b'unicode', $wanted_re ); $wanted_re = str_replace( - array('%u\|b%', '%b\|u%'), - version_compare(PHP_VERSION, '6.0.0-dev') == -1 ? '' : 'u', + array(b'%u\|b%', b'%b\|u%'), + version_compare(PHP_VERSION, '6.0.0-dev') == -1 ? b'' : b'u', $wanted_re ); // Stick to basics - $wanted_re = str_replace('%e', '\\' . DIRECTORY_SEPARATOR, $wanted_re); - $wanted_re = str_replace('%s', '[^\r\n]+', $wanted_re); - $wanted_re = str_replace('%S', '[^\r\n]*', $wanted_re); - $wanted_re = str_replace('%a', '.+', $wanted_re); - $wanted_re = str_replace('%A', '.*', $wanted_re); - $wanted_re = str_replace('%w', '\s*', $wanted_re); - $wanted_re = str_replace('%i', '[+-]?\d+', $wanted_re); - $wanted_re = str_replace('%d', '\d+', $wanted_re); - $wanted_re = str_replace('%x', '[0-9a-fA-F]+', $wanted_re); - $wanted_re = str_replace('%f', '[+-]?\.?\d+\.?\d*(?:[Ee][+-]?\d+)?', $wanted_re); - $wanted_re = str_replace('%c', '.', $wanted_re); + $wanted_re = str_replace(b'%e', b'\\' . DIRECTORY_SEPARATOR, $wanted_re); + $wanted_re = str_replace(b'%s', b'[^\r\n]+', $wanted_re); + $wanted_re = str_replace(b'%S', b'[^\r\n]*', $wanted_re); + $wanted_re = str_replace(b'%a', b'.+', $wanted_re); + $wanted_re = str_replace(b'%A', b'.*', $wanted_re); + $wanted_re = str_replace(b'%w', b'\s*', $wanted_re); + $wanted_re = str_replace(b'%i', b'[+-]?\d+', $wanted_re); + $wanted_re = str_replace(b'%d', b'\d+', $wanted_re); + $wanted_re = str_replace(b'%x', b'[0-9a-fA-F]+', $wanted_re); + $wanted_re = str_replace(b'%f', b'[+-]?\.?\d+\.?\d*(?:[Ee][+-]?\d+)?', $wanted_re); + $wanted_re = str_replace(b'%c', b'.', $wanted_re); // %f allows two points "-.0.0" but that is the best *simple* expression } /* DEBUG YOUR REGEX HERE @@ -1821,7 +1820,7 @@ print(str_repeat('=', 80) . "\n"); var_dump($output); */ - if (preg_match((binary) "/^$wanted_re\$/s", $output)) { + if (preg_match(b"/^$wanted_re\$/s", $output)) { $passed = true; if (!$cfg['keep']['php']) { @unlink($test_file); @@ -1843,8 +1842,8 @@ } else { - $wanted = trim($section_text['EXPECT']); - $wanted = preg_replace('/\r\n/',"\n", $wanted); + $wanted = (binary) trim($section_text['EXPECT']); + $wanted = preg_replace(b'/\r\n/',b"\n", $wanted); show_file_block('exp', $wanted); // compare and leave on success @@ -1876,8 +1875,8 @@ // Test failed so we need to report details. if ($failed_headers) { $passed = false; - $wanted = $wanted_headers . "\n--HEADERS--\n" . $wanted; - $output = $output_headers . "\n--HEADERS--\n" . $output; + $wanted = (binary) $wanted_headers . b"\n--HEADERS--\n" . (binary) $wanted; + $output = (binary) $output_headers . b"\n--HEADERS--\n" . (binary) $output; if (isset($wanted_re)) { $wanted_re = preg_quote($wanted_headers . "\n--HEADERS--\n", '/') . $wanted_re; Modified: php/php-src/branches/PHP_5_3/run-tests.php =================================================================== --- php/php-src/branches/PHP_5_3/run-tests.php 2009-07-29 10:05:12 UTC (rev 286502) +++ php/php-src/branches/PHP_5_3/run-tests.php 2009-07-29 10:06:55 UTC (rev 286503) @@ -1023,7 +1023,7 @@ { global $leak_check, $cwd; - $data = ''; + $data = b''; $bin_env = array(); foreach((array)$env as $key => $value) { @@ -1059,23 +1059,23 @@ break; } else if ($n === 0) { /* timed out */ - $data .= "\n ** ERROR: process timed out **\n"; + $data .= b"\n ** ERROR: process timed out **\n"; proc_terminate($proc); return $data; } else if ($n > 0) { - $line = fread($pipes[1], 8192); + $line = (binary) fread($pipes[1], 8192); if (strlen($line) == 0) { /* EOF */ break; } - $data .= (binary) $line; + $data .= $line; } } $stat = proc_get_status($proc); if ($stat['signaled']) { - $data .= "\nTermsig=" . $stat['stopsig']; + $data .= b"\nTermsig=" . $stat['stopsig']; } $code = proc_close($proc); @@ -1140,7 +1140,6 @@ global $leak_check, $temp_source, $temp_target, $cfg, $environment; global $no_clean; global $valgrind_version; - $temp_filenames = null; $org_file = $file; @@ -1649,7 +1648,7 @@ COMMAND $cmd "; - $out = system_with_timeout($cmd, $env, isset($section_text['STDIN']) ? $section_text['STDIN'] : null); + $out = (binary) system_with_timeout($cmd, $env, isset($section_text['STDIN']) ? $section_text['STDIN'] : null); if (array_key_exists('CLEAN', $section_text) && (!$no_clean || $cfg['keep']['clean'])) { @@ -1686,19 +1685,19 @@ } // Does the output match what is expected? - $output = preg_replace("/\r\n/", "\n", trim($out)); + $output = preg_replace(b"/\r\n/", b"\n", trim($out)); /* when using CGI, strip the headers from the output */ - $headers = ""; + $headers = b""; - if (isset($old_php) && preg_match("/^(.*?)\r?\n\r?\n(.*)/s", $out, $match)) { + if (isset($old_php) && preg_match(b"/^(.*?)\r?\n\r?\n(.*)/s", $out, $match)) { $output = trim($match[2]); - $rh = preg_split("/[\n\r]+/", $match[1]); + $rh = preg_split(b"/[\n\r]+/", $match[1]); $headers = array(); foreach ($rh as $line) { - if (strpos($line, ':') !== false) { - $line = explode(':', $line, 2); + if (strpos($line, b':') !== false) { + $line = explode(b':', $line, 2); $headers[trim($line[0])] = trim($line[1]); } } @@ -1709,13 +1708,13 @@ if (isset($section_text['EXPECTHEADERS'])) { $want = array(); $wanted_headers = array(); - $lines = preg_split("/[\n\r]+/", $section_text['EXPECTHEADERS']); + $lines = preg_split(b"/[\n\r]+/", (binary) $section_text['EXPECTHEADERS']); foreach($lines as $line) { - if (strpos($line, ':') !== false) { - $line = explode(':', $line, 2); + if (strpos($line, b':') !== false) { + $line = explode(b':', $line, 2); $want[trim($line[0])] = trim($line[1]); - $wanted_headers[] = trim($line[0]) . ': ' . trim($line[1]); + $wanted_headers[] = trim($line[0]) . b': ' . trim($line[1]); } } @@ -1727,7 +1726,7 @@ if (isset($org_headers[$k])) { $headers = $org_headers[$k]; - $output_headers[] = $k . ': ' . $org_headers[$k]; + $output_headers[] = $k . b': ' . $org_headers[$k]; } if (!isset($org_headers[$k]) || $org_headers[$k] != $v) { @@ -1736,9 +1735,9 @@ } ksort($wanted_headers); - $wanted_headers = join("\n", $wanted_headers); + $wanted_headers = join(b"\n", $wanted_headers); ksort($output_headers); - $output_headers = join("\n", $output_headers); + $output_headers = join(b"\n", $output_headers); } show_file_block('out', $output); @@ -1752,13 +1751,13 @@ } show_file_block('exp', $wanted); - $wanted_re = preg_replace('/\r\n/', "\n", $wanted); + $wanted_re = preg_replace(b'/\r\n/', b"\n", $wanted); if (isset($section_text['EXPECTF'])) { // do preg_quote, but miss out any %r delimited sections - $temp = ""; - $r = "%r"; + $temp = b""; + $r = b"%r"; $startOffset = 0; $length = strlen($wanted_re); while($startOffset < $length) { @@ -1775,45 +1774,45 @@ $start = $end = $length; } // quote a non re portion of the string - $temp = $temp . preg_quote(substr($wanted_re, $startOffset, ($start - $startOffset)), '/'); + $temp = $temp . preg_quote(substr($wanted_re, $startOffset, ($start - $startOffset)), b'/'); // add the re unquoted. - $temp = $temp . '(' . substr($wanted_re, $start+2, ($end - $start-2)). ')'; + $temp = $temp . b'(' . substr($wanted_re, $start+2, ($end - $start-2)). b')'; $startOffset = $end + 2; } $wanted_re = $temp; $wanted_re = str_replace( - array('%binary_string_optional%'), - version_compare(PHP_VERSION, '6.0.0-dev') == -1 ? 'string' : 'binary string', + array(b'%binary_string_optional%'), + version_compare(PHP_VERSION, '6.0.0-dev') == -1 ? b'string' : b'binary string', $wanted_re ); $wanted_re = str_replace( - array('%unicode_string_optional%'), - version_compare(PHP_VERSION, '6.0.0-dev') == -1 ? 'string' : 'Unicode string', + array(b'%unicode_string_optional%'), + version_compare(PHP_VERSION, '6.0.0-dev') == -1 ? b'string' : b'Unicode string', $wanted_re ); $wanted_re = str_replace( - array('%unicode\|string%', '%string\|unicode%'), - version_compare(PHP_VERSION, '6.0.0-dev') == -1 ? 'string' : 'unicode', + array(b'%unicode\|string%', b'%string\|unicode%'), + version_compare(PHP_VERSION, '6.0.0-dev') == -1 ? b'string' : b'unicode', $wanted_re ); $wanted_re = str_replace( - array('%u\|b%', '%b\|u%'), - version_compare(PHP_VERSION, '6.0.0-dev') == -1 ? '' : 'u', + array(b'%u\|b%', b'%b\|u%'), + version_compare(PHP_VERSION, '6.0.0-dev') == -1 ? b'' : b'u', $wanted_re ); // Stick to basics - $wanted_re = str_replace('%e', '\\' . DIRECTORY_SEPARATOR, $wanted_re); - $wanted_re = str_replace('%s', '[^\r\n]+', $wanted_re); - $wanted_re = str_replace('%S', '[^\r\n]*', $wanted_re); - $wanted_re = str_replace('%a', '.+', $wanted_re); - $wanted_re = str_replace('%A', '.*', $wanted_re); - $wanted_re = str_replace('%w', '\s*', $wanted_re); - $wanted_re = str_replace('%i', '[+-]?\d+', $wanted_re); - $wanted_re = str_replace('%d', '\d+', $wanted_re); - $wanted_re = str_replace('%x', '[0-9a-fA-F]+', $wanted_re); - $wanted_re = str_replace('%f', '[+-]?\.?\d+\.?\d*(?:[Ee][+-]?\d+)?', $wanted_re); - $wanted_re = str_replace('%c', '.', $wanted_re); + $wanted_re = str_replace(b'%e', b'\\' . DIRECTORY_SEPARATOR, $wanted_re); + $wanted_re = str_replace(b'%s', b'[^\r\n]+', $wanted_re); + $wanted_re = str_replace(b'%S', b'[^\r\n]*', $wanted_re); + $wanted_re = str_replace(b'%a', b'.+', $wanted_re); + $wanted_re = str_replace(b'%A', b'.*', $wanted_re); + $wanted_re = str_replace(b'%w', b'\s*', $wanted_re); + $wanted_re = str_replace(b'%i', b'[+-]?\d+', $wanted_re); + $wanted_re = str_replace(b'%d', b'\d+', $wanted_re); + $wanted_re = str_replace(b'%x', b'[0-9a-fA-F]+', $wanted_re); + $wanted_re = str_replace(b'%f', b'[+-]?\.?\d+\.?\d*(?:[Ee][+-]?\d+)?', $wanted_re); + $wanted_re = str_replace(b'%c', b'.', $wanted_re); // %f allows two points "-.0.0" but that is the best *simple* expression } /* DEBUG YOUR REGEX HERE @@ -1821,7 +1820,7 @@ print(str_repeat('=', 80) . "\n"); var_dump($output); */ - if (preg_match((binary) "/^$wanted_re\$/s", $output)) { + if (preg_match(b"/^$wanted_re\$/s", $output)) { $passed = true; if (!$cfg['keep']['php']) { @unlink($test_file); @@ -1843,8 +1842,8 @@ } else { - $wanted = trim($section_text['EXPECT']); - $wanted = preg_replace('/\r\n/',"\n", $wanted); + $wanted = (binary) trim($section_text['EXPECT']); + $wanted = preg_replace(b'/\r\n/',b"\n", $wanted); show_file_block('exp', $wanted); // compare and leave on success @@ -1876,8 +1875,8 @@ // Test failed so we need to report details. if ($failed_headers) { $passed = false; - $wanted = $wanted_headers . "\n--HEADERS--\n" . $wanted; - $output = $output_headers . "\n--HEADERS--\n" . $output; + $wanted = (binary) $wanted_headers . b"\n--HEADERS--\n" . (binary) $wanted; + $output = (binary) $output_headers . b"\n--HEADERS--\n" . (binary) $output; if (isset($wanted_re)) { $wanted_re = preg_quote($wanted_headers . "\n--HEADERS--\n", '/') . $wanted_re;
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php