laruence Sun, 23 Oct 2011 13:57:25 +0000 Revision: http://svn.php.net/viewvc?view=revision&revision=318343
Log: add tests for PATH_INFO update php_cli_server.inc to support no router server Changed paths: U php/php-src/branches/PHP_5_4/sapi/cli/tests/php_cli_server.inc A php/php-src/branches/PHP_5_4/sapi/cli/tests/php_cli_server_009.phpt U php/php-src/trunk/sapi/cli/tests/php_cli_server.inc A php/php-src/trunk/sapi/cli/tests/php_cli_server_009.phpt Modified: php/php-src/branches/PHP_5_4/sapi/cli/tests/php_cli_server.inc =================================================================== --- php/php-src/branches/PHP_5_4/sapi/cli/tests/php_cli_server.inc 2011-10-23 13:49:54 UTC (rev 318342) +++ php/php-src/branches/PHP_5_4/sapi/cli/tests/php_cli_server.inc 2011-10-23 13:57:25 UTC (rev 318343) @@ -1,10 +1,10 @@ <?php define ("PHP_CLI_SERVER_ADDRESS", "localhost:8964"); -function php_cli_server_start($code = 'echo "Hello world";') { +function php_cli_server_start($code = 'echo "Hello world";', $no_router = FALSE) { $php_executable = getenv('TEST_PHP_EXECUTABLE'); $doc_root = __DIR__; - $router = "router.php"; + $router = "index.php"; file_put_contents($doc_root . '/' . $router, '<?php ' . $code . ' ?>'); $descriptorspec = array( @@ -13,18 +13,21 @@ 2 => STDERR, ); - $cmd = "exec {$php_executable} -t {$doc_root} -S " . PHP_CLI_SERVER_ADDRESS . " {$router}"; + $cmd = "exec {$php_executable} -t {$doc_root} -S " . PHP_CLI_SERVER_ADDRESS; + if (!$no_router) { + $cmd .= " {$router}"; + } + $handle = proc_open($cmd, $descriptorspec, $pipes, $doc_root); register_shutdown_function( - function($handle) { + function($handle) use($router) { proc_terminate($handle); - @unlink(__DIR__ . "/router.php"); + @unlink(__DIR__ . "/{$router}"); }, $handle ); - - usleep(50000); + usleep(50000); } ?> Added: php/php-src/branches/PHP_5_4/sapi/cli/tests/php_cli_server_009.phpt =================================================================== --- php/php-src/branches/PHP_5_4/sapi/cli/tests/php_cli_server_009.phpt (rev 0) +++ php/php-src/branches/PHP_5_4/sapi/cli/tests/php_cli_server_009.phpt 2011-10-23 13:57:25 UTC (rev 318343) @@ -0,0 +1,99 @@ +--TEST-- +PATH_INFO (relevant to #60112) +--DESCRIPTION-- +After this fix(#60112), previously 404 request like "localhost/foo/bar" +now could serve correctly with request_uri "index.php" and PATH_INFO "/foo/bar/" +--SKIPIF-- +<?php +include "skipif.inc"; +if (substr(PHP_OS, 0, 3) == 'WIN') { + die ("skip not for Windows"); +} +?> +--FILE-- +<?php +include "php_cli_server.inc"; +php_cli_server_start('var_dump($_SERVER["PATH_INFO"]);', TRUE); + +list($host, $port) = explode(':', PHP_CLI_SERVER_ADDRESS); +$port = intval($port)?:80; + +$fp = fsockopen($host, $port, $errno, $errstr, 0.5); +if (!$fp) { + die("connect failed"); +} + +if(fwrite($fp, <<<HEADER +GET /foo/bar HTTP/1.1 +Host: {$host} + + +HEADER +)) { + while (!feof($fp)) { + echo fgets($fp); + } +} + +fclose($fp); + +$fp = fsockopen($host, $port, $errno, $errstr, 0.5); +if (!$fp) { + die("connect failed"); +} + + +if(fwrite($fp, <<<HEADER +GET /foo/bar/ HTTP/1.0 +Host: {$host} + + +HEADER +)) { + while (!feof($fp)) { + echo fgets($fp); + } +} + +fclose($fp); + +$fp = fsockopen($host, $port, $errno, $errstr, 0.5); +if (!$fp) { + die("connect failed"); +} + + +if(fwrite($fp, <<<HEADER +GET /foo/bar.js HTTP/1.0 +Host: {$host} + + +HEADER +)) { + while (!feof($fp)) { + echo fgets($fp); + break; + } +} + +fclose($fp); +?> +--EXPECTF-- +[%s] %s +HTTP/1.1 200 OK +Host: %s +Connection: closed +X-Powered-By: PHP/%s-dev +Content-type: text/html + +string(8) "/foo/bar" +[%s] %s +HTTP/1.0 200 OK +Host: %s +Connection: closed +X-Powered-By: PHP/5.5.0-dev +Content-type: text/html + +string(9) "/foo/bar/" +[%s] %s +HTTP/1.0 404 Not Found Modified: php/php-src/trunk/sapi/cli/tests/php_cli_server.inc =================================================================== --- php/php-src/trunk/sapi/cli/tests/php_cli_server.inc 2011-10-23 13:49:54 UTC (rev 318342) +++ php/php-src/trunk/sapi/cli/tests/php_cli_server.inc 2011-10-23 13:57:25 UTC (rev 318343) @@ -1,10 +1,10 @@ <?php define ("PHP_CLI_SERVER_ADDRESS", "localhost:8964"); -function php_cli_server_start($code = 'echo "Hello world";') { +function php_cli_server_start($code = 'echo "Hello world";', $no_router = FALSE) { $php_executable = getenv('TEST_PHP_EXECUTABLE'); $doc_root = __DIR__; - $router = "router.php"; + $router = "index.php"; file_put_contents($doc_root . '/' . $router, '<?php ' . $code . ' ?>'); $descriptorspec = array( @@ -13,14 +13,18 @@ 2 => STDERR, ); - $cmd = "exec {$php_executable} -t {$doc_root} -S " . PHP_CLI_SERVER_ADDRESS . " {$router}"; + $cmd = "exec {$php_executable} -t {$doc_root} -S " . PHP_CLI_SERVER_ADDRESS; + if (!$no_router) { + $cmd .= " {$router}"; + } + $handle = proc_open($cmd, $descriptorspec, $pipes, $doc_root); register_shutdown_function( - function($handle) { + function($handle) use($router) { proc_terminate($handle); - @unlink(__DIR__ . "/router.php"); + @unlink(__DIR__ . "/{$router}"); }, $handle ); Added: php/php-src/trunk/sapi/cli/tests/php_cli_server_009.phpt =================================================================== --- php/php-src/trunk/sapi/cli/tests/php_cli_server_009.phpt (rev 0) +++ php/php-src/trunk/sapi/cli/tests/php_cli_server_009.phpt 2011-10-23 13:57:25 UTC (rev 318343) @@ -0,0 +1,99 @@ +--TEST-- +PATH_INFO (relevant to #60112) +--DESCRIPTION-- +After this fix(#60112), previously 404 request like "localhost/foo/bar" +now could serve correctly with request_uri "index.php" and PATH_INFO "/foo/bar/" +--SKIPIF-- +<?php +include "skipif.inc"; +if (substr(PHP_OS, 0, 3) == 'WIN') { + die ("skip not for Windows"); +} +?> +--FILE-- +<?php +include "php_cli_server.inc"; +php_cli_server_start('var_dump($_SERVER["PATH_INFO"]);', TRUE); + +list($host, $port) = explode(':', PHP_CLI_SERVER_ADDRESS); +$port = intval($port)?:80; + +$fp = fsockopen($host, $port, $errno, $errstr, 0.5); +if (!$fp) { + die("connect failed"); +} + +if(fwrite($fp, <<<HEADER +GET /foo/bar HTTP/1.1 +Host: {$host} + + +HEADER +)) { + while (!feof($fp)) { + echo fgets($fp); + } +} + +fclose($fp); + +$fp = fsockopen($host, $port, $errno, $errstr, 0.5); +if (!$fp) { + die("connect failed"); +} + + +if(fwrite($fp, <<<HEADER +GET /foo/bar/ HTTP/1.0 +Host: {$host} + + +HEADER +)) { + while (!feof($fp)) { + echo fgets($fp); + } +} + +fclose($fp); + +$fp = fsockopen($host, $port, $errno, $errstr, 0.5); +if (!$fp) { + die("connect failed"); +} + + +if(fwrite($fp, <<<HEADER +GET /foo/bar.js HTTP/1.0 +Host: {$host} + + +HEADER +)) { + while (!feof($fp)) { + echo fgets($fp); + break; + } +} + +fclose($fp); +?> +--EXPECTF-- +[%s] %s +HTTP/1.1 200 OK +Host: %s +Connection: closed +X-Powered-By: PHP/%s-dev +Content-type: text/html + +string(8) "/foo/bar" +[%s] %s +HTTP/1.0 200 OK +Host: %s +Connection: closed +X-Powered-By: PHP/5.5.0-dev +Content-type: text/html + +string(9) "/foo/bar/" +[%s] %s +HTTP/1.0 404 Not Found
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php