]> granicus.if.org Git - php/commitdiff
Refactored and speeded up php_cli_server tests, also get rid of test hanging on ubuntu:
authorShein Alexey <shein@php.net>
Tue, 20 Sep 2011 14:53:46 +0000 (14:53 +0000)
committerShein Alexey <shein@php.net>
Tue, 20 Sep 2011 14:53:46 +0000 (14:53 +0000)
1) Prepended starting the server with "exec" so proc_terminate can correctly close it (see also this note http://www.php.net/manual/en/function.proc-get-status.php#93382 for details)
2) Moved putting down the server to the shutdown function to make it independent from tests (fatal) errors
3) Moved php cli executable into the function to make tests more readable
4) changed sleep(1) to usleep(50000) (50 ms) to make tests faster - this needs more testing and if timeout is too small should be increased

sapi/cli/tests/php_cli_server.inc
sapi/cli/tests/php_cli_server_001.phpt
sapi/cli/tests/php_cli_server_002.phpt
sapi/cli/tests/php_cli_server_003.phpt

index 012efa704fec2e1acf877456d58325c923d69256..3a4e8ebb17865599f56fd550272385a3fc85f74d 100644 (file)
@@ -1,7 +1,8 @@
 <?php
 define ("PHP_CLI_SERVER_ADDRESS", "localhost:8964");
 
-function php_cli_server_start($php_executable, $code = 'echo "Hello world";') {
+function php_cli_server_start($code = 'echo "Hello world";') {
+    $php_executable = getenv('TEST_PHP_EXECUTABLE');
        $doc_root = __DIR__;
        $router = "router.php";
        file_put_contents($doc_root . '/' . $router, '<?php ' . $code . ' ?>');
@@ -12,18 +13,18 @@ function php_cli_server_start($php_executable, $code = 'echo "Hello world";') {
                2 => STDERR,
        );
 
-       $cmd = "{$php_executable} -t {$doc_root} -S " . PHP_CLI_SERVER_ADDRESS . " {$router}";
+       $cmd = "exec {$php_executable} -t {$doc_root} -S " . PHP_CLI_SERVER_ADDRESS . " {$router}";
 
        $handle = proc_open($cmd, $descriptorspec, $pipes, $doc_root);
-       sleep(1);
 
-       return $handle;
-}
+    register_shutdown_function(
+        function($handle) {
+            proc_terminate($handle);
+            @unlink(__DIR__ . "/router.php");
+        },
+        $handle
+    );
 
-function php_cli_server_shutdown($handle) {
-       proc_terminate($handle);
-       proc_close($handle);
-       @unlink(__DIR__ . "router.php");
-       return true;
+    usleep(50000);
 }
 ?>
index 30d72700ba239a3e9d8071641c0f6e2fe8b389b4..27c81bb6ba8e67201d0a7a4eae4ffc667b649b6f 100644 (file)
@@ -12,10 +12,8 @@ if (substr(PHP_OS, 0, 3) == 'WIN') {
 --FILE--
 <?php
 include "php_cli_server.inc";
-$php = getenv('TEST_PHP_EXECUTABLE');
-$handle = php_cli_server_start($php);
+php_cli_server_start();
 var_dump(file_get_contents("http://" . PHP_CLI_SERVER_ADDRESS));
-php_cli_server_shutdown($handle);
 ?>
---EXPECT--     
+--EXPECT--
 string(11) "Hello world"
index 046dd731c1931c9dec0286d32cc7f47e2e2c8319..e1120d61bf34586732e3745675249b2099c5dfdb 100644 (file)
@@ -12,10 +12,8 @@ if (substr(PHP_OS, 0, 3) == 'WIN') {
 --FILE--
 <?php
 include "php_cli_server.inc";
-$php = getenv('TEST_PHP_EXECUTABLE');
-$handle = php_cli_server_start($php, 'var_dump($_SERVER["DOCUMENT_ROOT"], $_SERVER["SERVER_SOFTWARE"]);');
+php_cli_server_start('var_dump($_SERVER["DOCUMENT_ROOT"], $_SERVER["SERVER_SOFTWARE"]);');
 var_dump(file_get_contents("http://" . PHP_CLI_SERVER_ADDRESS));
-php_cli_server_shutdown($handle);
 ?>
 --EXPECTF--    
 string(%d) "string(%d) "%s/tests"
index 0fe104ff6a9fbdf3c562084b930dd70c43661b5c..8e7f11fed737b0169edca2aba498684673cd6f9f 100644 (file)
@@ -12,11 +12,9 @@ if (substr(PHP_OS, 0, 3) == 'WIN') {
 --FILE--
 <?php
 include "php_cli_server.inc";
-$php = getenv('TEST_PHP_EXECUTABLE');
-$handle = php_cli_server_start($php, 'chdir("/tmp"); echo "okey";');
+php_cli_server_start('chdir("/tmp"); echo "okey";');
 var_dump(file_get_contents("http://" . PHP_CLI_SERVER_ADDRESS));
 var_dump(file_get_contents("http://" . PHP_CLI_SERVER_ADDRESS));
-php_cli_server_shutdown($handle);
 ?>
 --EXPECTF--    
 string(4) "okey"