Send a blank email to [email protected] to get a copy of this message
Hello!
I've made some improvements to run-tests.php:
1) Autoguessing TEST_PHP_EXECUTABLE and TEST_PHP_CGI_EXECUTABLE if
they're not provided, i.e. assume they have value 'auto'. You can
still pass your own value as usual.
2) Added option -n (use no php.ini) to the shebang line
(#!/usr/bin/php -n) so it would run more reliably on some hosts. My
Ubuntu setup did not have E letter in variables_order (i.e.
variables_order=GPCS) so $_ENV array was empty and some tests were
skipped when they could be run.
3) Some better error handling of wrong paths
So now you can run run-tests.php with just
$ ./run-tests.php ext
instead of
$ TEST_PHP_EXECUTABLE=auto php -n run-tests.php ext
You can also run run-tests.php from sub-dir, it will correctly guess
'auto' as well:
$ cd ext/
$ ../run-tests.php zlib
Please, review this patch and, if there's no objections, I will
prepare 5.4 and 5.3 versions too.
--
Regards,
Shein Alexey
Index: run-tests.php
===================================================================
--- run-tests.php (revision 316410)
+++ run-tests.php (working copy)
@@ -1,4 +1,4 @@
-#!/usr/bin/php
+#!/usr/bin/php -n
<?php
/*
+----------------------------------------------------------------------+
@@ -143,55 +143,40 @@
$environment["SystemRoot"] = getenv("SystemRoot");
}
-// Don't ever guess at the PHP executable location.
-// Require the explicit specification.
-// Otherwise we could end up testing the wrong file!
+// Try to guess PHP executable location if env variable is not provided, assume it to be 'auto'.
-$php = null;
-$php_cgi = null;
+$php = getenv('TEST_PHP_EXECUTABLE') ? getenv('TEST_PHP_EXECUTABLE') : 'auto';
+$php_cgi = getenv('TEST_PHP_CGI_EXECUTABLE') ? getenv('TEST_PHP_CGI_EXECUTABLE') : 'auto';
-if (getenv('TEST_PHP_EXECUTABLE')) {
- $php = getenv('TEST_PHP_EXECUTABLE');
-
- if ($php=='auto') {
- $php = $cwd . '/sapi/cli/php';
- putenv("TEST_PHP_EXECUTABLE=$php");
-
- if (!getenv('TEST_PHP_CGI_EXECUTABLE')) {
- $php_cgi = $cwd . '/sapi/cgi/php-cgi';
-
- if (file_exists($php_cgi)) {
- putenv("TEST_PHP_CGI_EXECUTABLE=$php_cgi");
- } else {
- $php_cgi = null;
- }
- }
- }
- $environment['TEST_PHP_EXECUTABLE'] = $php;
+if ($php == 'auto') {
+ $php = realpath(__DIR__ . '/sapi/cli/php');
+ putenv("TEST_PHP_EXECUTABLE=$php");
}
+$environment['TEST_PHP_EXECUTABLE'] = $php;
-if (getenv('TEST_PHP_CGI_EXECUTABLE')) {
- $php_cgi = getenv('TEST_PHP_CGI_EXECUTABLE');
-
- if ($php_cgi=='auto') {
- $php_cgi = $cwd . '/sapi/cgi/php-cgi';
- putenv("TEST_PHP_CGI_EXECUTABLE=$php_cgi");
- }
-
- $environment['TEST_PHP_CGI_EXECUTABLE'] = $php_cgi;
+if ($php_cgi == 'auto') {
+ $php_cgi = realpath(__DIR__ . '/sapi/cgi/php-cgi');
+ putenv("TEST_PHP_CGI_EXECUTABLE=$php_cgi");
}
+$environment['TEST_PHP_CGI_EXECUTABLE'] = $php_cgi;
function verify_config()
{
- global $php;
+ global $php, $php_cgi;
- if (empty($php) || !file_exists($php)) {
+ if (empty($php) || !is_file($php)) {
error('environment variable TEST_PHP_EXECUTABLE must be set to specify PHP executable!');
}
if (function_exists('is_executable') && !is_executable($php)) {
error("invalid PHP executable specified by TEST_PHP_EXECUTABLE = $php");
}
+
+ if (!empty($php_cgi)) {
+ if (!is_file($php_cgi) || (function_exists('is_executable') && !is_executable($php_cgi))) {
+ error("invalid PHP-CGI executable specified by TEST_PHP_CGI_EXECUTABLE = $php_cgi");
+ }
+ }
}
if (getenv('TEST_PHP_LOG_FORMAT')) {