running tests with CGI binary
| From: | Hartmut Holzgraefe | Date: | Thu, 24 Oct 2002 09:38:03 +0000 |
| Subject: | running tests with CGI binary | ||
| Groups: | php.dev | ||
| Request: | Send a blank email to php-dev+get-90055@lists.php.net to get a copy of this message | ||
fact #1: some tests *require* cgi sapi (eg. POST stuff)
fact #2: current test suid *does not work* with php-cgi
conclusion: a lot of stuff doesn't get any automatic testing
solution: (see attached patch)
- run-tests.php sets USER_AGENT=run-tests.php
- run-tests.php prepends testcode with chdir()
- php-cgi falls back to argc/argv parsing even
if in cgi mode when USER_AGENT=run-tests.php
with the patch applied the following works again:
export TEST_PHP_EXECUTABLE=sapi/cgi/php-cgi
sapi/cli/php run-tests.php
comments? ;)
-----8<---------------------------------
Index: run-tests.php
===================================================================
RCS file: /repository/php4/run-tests.php,v
retrieving revision 1.83
diff -u -2 -r1.83 run-tests.php
--- run-tests.php 23 Oct 2002 12:54:57 -0000 1.83 +++ run-tests.php 24 Oct 2002 09:26:06 -0000@@ -83,4 +83,6 @@ } +$php = realpath($php); + // Check whether a detailed log is wanted. if (getenv('TEST_PHP_DETAILED')) { @@ -425,4 +427,5 @@
// Reset environment from any previous test.
+ putenv("USER_AGENT=run-tests.php");
putenv("REDIRECT_STATUS=");
putenv("QUERY_STRING=");
@@ -437,7 +440,8 @@
if (trim($section_text['SKIPIF'])) {
save_text($tmp_skipif, $section_text['SKIPIF']);
- $output = $php $tmp_skipif;
+ putenv("PATH_TRANSLATED=$tmp_skipif");
+ $output = $php -q $tmp_skipif;
@unlink($tmp_skipif);
- if (ereg("^skip", trim($output))){
+ if (ereg("^skip", $output)){
echo "SKIP $tested";
$reason = (ereg("^skip[[:space:]]*(.+)\$", trim(
$output))) ? ereg_replace("^skip[[:space:]]*(.+)\$", "\\1", trim($output)) : FAL
SE;
@@ -478,5 +482,5 @@
// We've satisfied the preconditions - run the test!
- save_text($tmp_file,$section_text['FILE']);
+ save_text($tmp_file,"<?php chdir('".getcwd()."'); ?>" . $section_text['F
ILE']);
if (array_key_exists('GET', $section_text)) {
$query_string = trim($section_text['GET']);
@@ -502,6 +506,5 @@
putenv("CONTENT_LENGTH=$content_length");
- $cmd = "$php$ini_settings -f $tmp_file 2>&1 < $tmp_post";-
+ $cmd = "$php -q $ini_settings -f $tmp_file 2>&1 < ". realpath($tmp_post);
} else {
@@ -510,5 +513,5 @@
putenv("CONTENT_LENGTH=");
- $cmd = "$php$ini_settings -f $tmp_file$args 2>&1";
+ $cmd = "$php -q $ini_settings -f $tmp_file$args 2>&1";
}
@@ -524,6 +527,6 @@
";
- $out = $cmd;
-
+ $out = $cmd;
+
@unlink($tmp_post);Index: sapi/cgi/cgi_main.c =================================================================== RCS file: /repository/php4/sapi/cgi/cgi_main.c,v retrieving revision 1.183 diff -u -2 -r1.183 cgi_main.c
--- sapi/cgi/cgi_main.c 13 Oct 2002 09:40:44 -0000 1.183+++ sapi/cgi/cgi_main.c 24 Oct 2002 09:26:06 -0000 @@ -523,5 +523,5 @@ {
int exit_status = SUCCESS;
- int cgi = 0, c, i, len;
+ int cgi = 0, c, i, len, testmode = 0;
zend_file_handle file_handle;
int retval = FAILURE;
@@ -574,4 +574,8 @@
#endif
+#ifndef PHP_FASTCGI
+ s = getenv("USER_AGENT");
+ if(s && !strcmp(s, "run-tests.php")) testmode = 1;
+#endif
#ifdef ZTS
@@ -876,9 +880,9 @@
zend_llist_init(&global_vars, sizeof(char *), NULL, 0);
- if (!cgi + if ( testmode || (!cgi#ifdef PHP_FASTCGI
&& !fastcgi#endif
- ) { /* never execute
the arguments if you are a CGI */
+ )) { /* never execute the arguments if you are a CGI unl
ess in testmode*/
if (SG(request_info).argv0) {
free(SG(request_info).argv0);
--
Six Offene Systeme GmbH http://www.six.de/
i.A. Hartmut Holzgraefe
Email: hartmut@six.de
Tel.: +49-711-99091-77