diff options
author | Xinchen Hui <laruence@php.net> | 2011-10-23 13:57:25 +0000 |
---|---|---|
committer | Xinchen Hui <laruence@php.net> | 2011-10-23 13:57:25 +0000 |
commit | 455bc9df4c782be790747df0fc13696bef356708 (patch) | |
tree | 2f4314cdafb3e4756a55365b0a682acecacb62c3 | |
parent | f17a21549319c2ea882649ab1225b8b4f2133eec (diff) | |
download | php-git-455bc9df4c782be790747df0fc13696bef356708.tar.gz |
add tests for PATH_INFO
update php_cli_server.inc to support no router server
-rw-r--r-- | sapi/cli/tests/php_cli_server.inc | 14 | ||||
-rw-r--r-- | sapi/cli/tests/php_cli_server_009.phpt | 99 |
2 files changed, 108 insertions, 5 deletions
diff --git a/sapi/cli/tests/php_cli_server.inc b/sapi/cli/tests/php_cli_server.inc index ed861e26ab..3f0e026053 100644 --- a/sapi/cli/tests/php_cli_server.inc +++ b/sapi/cli/tests/php_cli_server.inc @@ -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 @@ function php_cli_server_start($code = 'echo "Hello world";') { 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 ); diff --git a/sapi/cli/tests/php_cli_server_009.phpt b/sapi/cli/tests/php_cli_server_009.phpt new file mode 100644 index 0000000000..d88052f49a --- /dev/null +++ b/sapi/cli/tests/php_cli_server_009.phpt @@ -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 |