]> granicus.if.org Git - php/commitdiff
add tests for CGI
authorAntony Dovgal <tony2001@php.net>
Tue, 17 Apr 2007 19:49:26 +0000 (19:49 +0000)
committerAntony Dovgal <tony2001@php.net>
Tue, 17 Apr 2007 19:49:26 +0000 (19:49 +0000)
run-tests.php
sapi/cgi/tests/001.phpt [new file with mode: 0644]
sapi/cgi/tests/002.phpt [new file with mode: 0644]
sapi/cgi/tests/003.phpt [new file with mode: 0644]
sapi/cgi/tests/004.phpt [new file with mode: 0644]
sapi/cgi/tests/005.phpt [new file with mode: 0644]
sapi/cgi/tests/006.phpt [new file with mode: 0644]
sapi/cgi/tests/007.phpt [new file with mode: 0644]
sapi/cgi/tests/008.phpt [new file with mode: 0644]
sapi/cgi/tests/include.inc [new file with mode: 0644]
sapi/cgi/tests/skipif.inc [new file with mode: 0644]

index c894fa95bdd398410a4fda5ab38be28a774e262b..22528c08231977a4e9ad0ef804c4873679197c2e 100755 (executable)
@@ -534,7 +534,7 @@ $exts_skipped = 0;
 $ignored_by_ext = 0;
 sort($exts_to_test);
 $test_dirs = array();
-$optionals = array('tests', 'ext', 'Zend', 'ZendEngine2', 'sapi/cli');
+$optionals = array('tests', 'ext', 'Zend', 'ZendEngine2', 'sapi/cli', 'sapi/cgi');
 foreach($optionals as $dir) {
        if (@filetype($dir) == 'dir') {
                $test_dirs[] = $dir;
diff --git a/sapi/cgi/tests/001.phpt b/sapi/cgi/tests/001.phpt
new file mode 100644 (file)
index 0000000..74c694f
--- /dev/null
@@ -0,0 +1,22 @@
+--TEST--
+version string
+--SKIPIF--
+<?php include "skipif.inc"; ?>
+--FILE--
+<?php
+
+include "include.inc";
+
+$php = get_cgi_path();
+reset_env_vars();
+
+var_dump(`$php -n -v`);
+
+echo "Done\n";
+?>
+--EXPECTF--
+string(%d) "PHP %s (cgi%s (built: %s
+Copyright (c) 1997-20%s The PHP Group
+Zend Engine v%s, Copyright (c) 1998-20%s Zend Technologies
+"
+Done
diff --git a/sapi/cgi/tests/002.phpt b/sapi/cgi/tests/002.phpt
new file mode 100644 (file)
index 0000000..66e2424
--- /dev/null
@@ -0,0 +1,52 @@
+--TEST--
+defining INI options with -d
+--SKIPIF--
+<?php 
+include "skipif.inc"; 
+?>
+--FILE--
+<?php
+include "include.inc";
+
+$php = get_cgi_path();
+reset_env_vars();
+
+$file = dirname(__FILE__)."/002.test.php";
+
+file_put_contents($file, '<?php var_dump(ini_get("max_execution_time")); ?>');
+
+var_dump(`$php -n -d max_execution_time=111 $file`);
+var_dump(`$php -n -d max_execution_time=500 $file`);
+var_dump(`$php -n -d max_execution_time=500 -d max_execution_time=555 $file`);
+
+file_put_contents($file, '<?php var_dump(ini_get("max_execution_time")); var_dump(ini_get("upload_tmp_dir")); ?>');
+
+var_dump(`$php -n -d upload_tmp_dir=/test/path -d max_execution_time=555 $file`);
+
+unlink($file);
+
+echo "Done\n";
+?>
+--EXPECTF--    
+string(%d) "X-Powered-By: PHP/%s
+Content-type: text/html
+
+string(3) "111"
+"
+string(%d) "X-Powered-By: PHP/%s
+Content-type: text/html
+
+string(3) "500"
+"
+string(%d) "X-Powered-By: PHP/%s
+Content-type: text/html
+
+string(3) "555"
+"
+string(%d) "X-Powered-By: PHP/%s
+Content-type: text/html
+
+string(3) "555"
+string(10) "/test/path"
+"
+Done
diff --git a/sapi/cgi/tests/003.phpt b/sapi/cgi/tests/003.phpt
new file mode 100644 (file)
index 0000000..0da3ca8
--- /dev/null
@@ -0,0 +1,62 @@
+--TEST--
+strip comments and whitespace with -w
+--SKIPIF--
+<?php 
+include "skipif.inc"; 
+?>
+--FILE--
+<?php
+
+include "include.inc";
+
+$php = get_cgi_path();
+reset_env_vars();
+
+$filename = dirname(__FILE__).'/003.test.php';
+$code ='
+<?php
+/* some test script */
+
+class test { /* {{{ */
+       public $var = "test"; //test var
+#perl style comment 
+       private $pri; /* private attr */
+
+       function foo(/* void */) {
+       }
+}
+/* }}} */
+
+?>
+';
+
+file_put_contents($filename, $code);
+
+var_dump(`$php -n -w "$filename"`);
+var_dump(`$php -n -w "wrong"`);
+var_dump(`echo "<?php /* comment */ class test {\n // comment \n function foo() {} } ?>" | $php -n -w`);
+
+@unlink($filename);
+
+echo "Done\n";
+?>
+--EXPECTF--    
+string(%d) "X-Powered-By: PHP/%s
+Content-type: text/html
+
+
+<?php
+ class test { public $var = "test"; private $pri; function foo() { } } ?>
+"
+string(%d) "Status: 404
+X-Powered-By: PHP/%s
+Content-type: text/html
+
+No input file specified.
+"
+string(%d) "X-Powered-By: PHP/%s
+Content-type: text/html
+
+<?php  class test { function foo() {} } ?>
+"
+Done
diff --git a/sapi/cgi/tests/004.phpt b/sapi/cgi/tests/004.phpt
new file mode 100644 (file)
index 0000000..c841b68
--- /dev/null
@@ -0,0 +1,43 @@
+--TEST--
+execute a file with -f
+--SKIPIF--
+<?php 
+include "skipif.inc"; 
+?>
+--FILE--
+<?php
+
+include "include.inc";
+
+$php = get_cgi_path();
+reset_env_vars();
+
+$filename = dirname(__FILE__).'/004.test.php';
+$code ='
+<?php
+
+class test { 
+       private $pri; 
+}
+
+var_dump(test::$pri);
+?>
+';
+
+file_put_contents($filename, $code);
+
+var_dump(`$php -n -f "$filename" 2>/dev/null`);
+var_dump(`$php -n -f "wrong"`);
+
+@unlink($filename);
+
+echo "Done\n";
+?>
+--EXPECTF--    
+string(%d) "
+<br />
+<b>Fatal error</b>:  Cannot access private property test::$pri in <b>%s004.test.php</b> on line <b>8</b><br />
+"
+string(25) "No input file specified.
+"
+Done
diff --git a/sapi/cgi/tests/005.phpt b/sapi/cgi/tests/005.phpt
new file mode 100644 (file)
index 0000000..6d82b0f
--- /dev/null
@@ -0,0 +1,30 @@
+--TEST--
+using invalid combinations of cmdline options
+--SKIPIF--
+<?php include "skipif.inc"; ?>
+--FILE--
+<?php
+
+include "include.inc";
+
+$php = get_cgi_path();
+reset_env_vars();
+
+var_dump(`$php -n -c -f 'wrong'`);
+var_dump(`$php -n -a -f 'wrong'`);
+var_dump(`$php -n -f 'wrong' -a`);
+
+echo "Done\n";
+?>
+--EXPECTF--    
+string(55) "You cannot use both -n and -c switch. Use -h for help.
+"
+string(51) "No input file specified.
+Interactive mode enabled
+
+"
+string(51) "No input file specified.
+Interactive mode enabled
+
+"
+Done
diff --git a/sapi/cgi/tests/006.phpt b/sapi/cgi/tests/006.phpt
new file mode 100644 (file)
index 0000000..f0a6ee9
--- /dev/null
@@ -0,0 +1,60 @@
+--TEST--
+syntax check
+--SKIPIF--
+<?php include "skipif.inc"; ?>
+--FILE--
+<?php
+include "include.inc";
+
+$php = get_cgi_path();
+reset_env_vars();
+
+$filename = dirname(__FILE__)."/006.test.php";
+
+$code = '
+<?php
+
+$test = "var";
+
+class test {
+       private $var;
+}
+
+echo test::$var;
+
+?>
+';
+
+file_put_contents($filename, $code);
+
+var_dump(`"$php" -n -l "$filename"`);
+var_dump(`"$php" -n -l some.unknown`);
+
+$code = '
+<?php
+
+class test 
+       private $var;
+}
+
+?>
+';
+
+file_put_contents($filename, $code);
+
+var_dump(`"$php" -n -l "$filename" 2>/dev/null`);
+
+@unlink($filename);
+
+echo "Done\n";
+?>
+--EXPECTF--    
+string(%d) "No syntax errors detected in %s006.test.php
+"
+string(%d) "No input file specified.
+"
+string(%d) "<br />
+<b>Parse error</b>:  syntax error, unexpected T_PRIVATE, expecting '{' in <b>%s006.test.php</b> on line <b>5</b><br />
+Errors parsing %s006.test.php
+"
+Done
diff --git a/sapi/cgi/tests/007.phpt b/sapi/cgi/tests/007.phpt
new file mode 100644 (file)
index 0000000..c0f8df1
--- /dev/null
@@ -0,0 +1,22 @@
+--TEST--
+invalid arguments and error messages
+--SKIPIF--
+<?php include "skipif.inc"; ?>
+--FILE--
+<?php
+include "include.inc";
+
+$php = get_cgi_path();
+reset_env_vars();
+
+var_dump(`"$php" -n -f some.php -f some.php`);
+var_dump(`"$php" -s -w -l`);
+
+echo "Done\n";
+?>
+--EXPECTF--    
+string(25) "No input file specified.
+"
+string(31) "No syntax errors detected in -
+"
+Done
diff --git a/sapi/cgi/tests/008.phpt b/sapi/cgi/tests/008.phpt
new file mode 100644 (file)
index 0000000..d541ca4
--- /dev/null
@@ -0,0 +1,54 @@
+--TEST--
+syntax highlighting
+--SKIPIF--
+<?php include "skipif.inc"; ?>
+--FILE--
+<?php
+
+include "include.inc";
+
+$php = get_cgi_path();
+reset_env_vars();
+
+$filename = dirname(__FILE__)."/008.test.php";
+$code = '
+<?php
+$test = "var"; //var
+/* test class */
+class test {
+       private $var = array();
+
+       public static function foo(Test $arg) {
+               echo "hello";
+               var_dump($this);
+       }
+}
+
+$o = new test;
+?>
+';
+
+file_put_contents($filename, $code);
+
+var_dump(`"$php" -n -s "$filename"`);
+var_dump(`"$php" -n -s "unknown"`);
+
+@unlink($filename);
+
+echo "Done\n";
+?>
+--EXPECTF--    
+string(%d) "X-Powered-By: PHP/%s
+Content-type: text/html
+
+<code><span style="color: #000000">
+<br /><span style="color: #0000BB">&lt;?php<br />$test&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #DD0000">"var"</span><span style="color: #007700">;&nbsp;</span><span style="color: #FF8000">//var<br />/*&nbsp;test&nbsp;class&nbsp;*/<br /></span><span style="color: #007700">class&nbsp;</span><span style="color: #0000BB">test&nbsp;</span><span style="color: #007700">{<br />&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;</span><span style="color: #0000BB">$var&nbsp;</span><span style="color: #007700">=&nbsp;array();<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;static&nbsp;function&nbsp;</span><span style="color: #0000BB">foo</span><span style="color: #007700">(</span><span style="color: #0000BB">Test&nbsp;$arg</span><span style="color: #007700">)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;</span><span style="color: #DD0000">"hello"</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(</span><span style="color: #0000BB">$this</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}<br /><br /></span><span style="color: #0000BB">$o&nbsp;</span><span style="color: #007700">=&nbsp;new&nbsp;</span><span style="color: #0000BB">test</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">?&gt;<br /></span>
+</span>
+</code>"
+string(%d) "Status: 404
+X-Powered-By: PHP/%s
+Content-type: text/html
+
+No input file specified.
+"
+Done
diff --git a/sapi/cgi/tests/include.inc b/sapi/cgi/tests/include.inc
new file mode 100644 (file)
index 0000000..2a87321
--- /dev/null
@@ -0,0 +1,57 @@
+<?php
+
+function get_cgi_path() /* {{{ */
+{
+       $php = getenv("TEST_PHP_EXECUTABLE");
+
+       $cli = false;
+       $cgi = false;
+
+       if (file_exists($php) && is_executable($php)) {
+               $version = `$php -v`;
+               if (strstr($version, "(cli)")) {
+                       /* that's cli */
+                       $cli = true;
+               } else if (strpos($version, "(cgi")) {
+                       /* that's cgi */
+                       return $php;
+               }
+       }
+
+       if ($cli) {
+               /* trying to guess ... */
+               $php_path = $php;
+               for ($i = 0; $i < 2; $i++) {
+                       $slash_pos = strrpos($php_path, "/");
+                       if ($slash_pos) {
+                               $php_path = substr($php_path, 0, $slash_pos);
+                       } else {
+                               return FALSE;
+                       }
+               }
+
+               if ($php_path && is_dir($php_path) && file_exists($php_path."/cgi/php") && is_executable($php_path."/cgi/php")) { 
+                       /* gotcha */
+                       return $php_path."/cgi/php";
+               }
+               return false;
+       }
+       /* uhm? what's that then? */
+       return false;
+}
+/* }}} */
+
+function reset_env_vars() /* {{{ */
+{
+       putenv("REDIRECT_STATUS");
+       putenv("QUERY_STRING");
+       putenv("PATH_TRANSLATED");
+       putenv("SCRIPT_FILENAME");
+       putenv("SERVER_SOFTWARE");
+       putenv("SERVER_NAME");
+       putenv("GATEWAY_INTERFACE");
+       putenv("REQUEST_METHOD");
+}
+/* }}} */
+
+?>
diff --git a/sapi/cgi/tests/skipif.inc b/sapi/cgi/tests/skipif.inc
new file mode 100644 (file)
index 0000000..9da8b79
--- /dev/null
@@ -0,0 +1,17 @@
+<?php
+
+if (substr(php_sapi_name(), 0, 3) == "cgi") {
+       exit;
+}
+
+if (substr(PHP_OS, 0, 3) == 'WIN') {
+       die ("skip not for Windows");
+}
+
+include dirname(__FILE__)."/include.inc";
+
+if (!get_cgi_path()) {
+       die("skip CGI not found");
+}
+
+?>