make test

From: Date: Tue, 16 Jan 2001 19:46:02 +0000
Subject: make test
Groups: php.qa 
Request: Send a blank email to php-qa+get-2170@lists.php.net to get a copy of this message
Hello ppl I installed php-4.0.4pl1 and ran into errors for make test regarding the number of arguments for write(). I appended "t_" (without the quotes) to write() and writeln() so it doesn't conflict with the built-in PHP functions. Below you'll find the corrected file and the list of failed tests, along with the configure line and system info. * The system is a Debian SID running Linux-2.2.18pre21 on an i686. ./configure \ --prefix=/usr \ --with-regex=system \ --enable-force-cgi-redirect \ --with-config-file-path=/etc/php4/cgi \ --disable-rpath \ --disable-pear \ --enable-memory-limit \ --enable-calendar \ --with-db2 \ --with-ndbm \ --enable-exif \ --enable-filepro \ --enable-ftp \ --with-gettext \ --enable-sysvsem \ --enable-sysvshm \ --enable-track-vars \ --enable-trans-sid \ --disable-debug \ --disable-static \ --with-mm \ --enable-shmop \ --enable-sockets \ --with-yp \ --with-zlib \ --with-mysql=/usr \ --with-xml 20:35:13 [root@intranet:/usr/local/src/php-4.0.4pl1]# make test |grep failed session_set_save_handler test (004.phpt) ... failed File type functions (001.phpt) ... failed DB_Error/DB_Warning test (db_error.phpt) ... failed DB configurable error handler test (db_error2.phpt) ... failed DB::factory test (db_factory.phpt) ... failed DB::parseDSN test (db_parsedsn.phpt) ... failed MySQL DB::connect (001.phpt) ... failed MySQL DB fetch modes (002.phpt) ... failed PEAR constructor/destructor test (pear1.phpt) ... failed PEAR_Error test (pear_error.phpt) ... failed PEAR_Error in die mode (pear_error2.phpt) ... failed Simple POST Method test (002.phpt) ... failed GET and POST Method combined (003.phpt) ... failed Two variables in POST data (004.phpt) ... failed Three variables in POST data (005.phpt) ... failed Testing include (015.phpt) ... failed Testing user-defined function in included file (016.phpt) ... failed Regression test (023.phpt) ... failed Looped regression test (may take a while) (024.phpt) ... failed Tests failed: 19 ( 21%)

<?php /* +----------------------------------------------------------------------+ | PHP version 4.0 | +----------------------------------------------------------------------+ | Copyright (c) 1997, 1998, 1999, 2000 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 2.02 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | | available at through the world-wide-web at | | http://www.php.net/license/2_02.txt. | | If you did not receive a copy of the PHP license and are unable to | | obtain it through the world-wide-web, please send a note to | | license@php.net so we can mail you a copy immediately. | +----------------------------------------------------------------------+ | Authors: Stig Bakken <ssb@fast.no> | | (based on the PHP 3 test framework by Rasmus Lerdorf) | +----------------------------------------------------------------------+ */ ob_implicit_flush(); define('TEST_PASSED', 0); define('TEST_FAILED', -1); define('TEST_SKIPPED', -2); define('TEST_INTERNAL_ERROR', -3); initialize(); /* $opts = parse_options(&$argc, &$argv); if ($opts['help']) { usage(); exit; } */ do_testing($argc, $argv); exit; /*****************************************************************************/ function usage() { t_writeln("Usage: run-tests.php [-d] [-h] [dir|file...]"); } /* * Please use write() and writeln() for all screen output. * This makes it easier to convert to HTML output later. */ function t_write($str) { global $term_bold, $term_norm; $str = str_replace("%b", $term_bold, $str); $str = str_replace("%B", $term_norm, $str); print $str; } function t_writeln($str) { t_write("$str\n"); } function initialize() { global $term, $windows_p, $php, $skip, $testdirs, $tmpfile, $skipped, $failed, $passed, $total, $term_bold, $term_norm, $tests_in_dir; // XXX Should support HTML output as well. $term = getenv("TERM"); if (preg_match('/^(xterm|vt220)/', $term)) { $term_bold = sprintf("%c%c%c%c", 27, 91, 49, 109); $term_norm = sprintf("%c%c%c", 27, 91, 109); } elseif (preg_match('/^vt100/', $term)) { $term_bold = sprintf("%c%c%c%c", 27, 91, 49, 109); $term_norm = sprintf("%c%c%c", 27, 91, 109); } else { $term_bold = $term_norm = ""; } $windows_p = (substr(php_uname(), 0, 7) == "Windows"); if ($windows_p) { $php = "./php.exe"; } else { $php = $GLOBALS["TOP_BUILDDIR"]."/php"; } if (!is_executable($php)) { t_writeln("PHP CGI binary ($php) not executable."); t_writeln("Please compile PHP as a CGI executable and try again."); exit; } $skip = array( "CVS" => 1 ); $testdirs = array(); $tmpfile = array(); $tests_in_dir = array(); register_shutdown_function("delete_tmpfiles"); $skipped = $failed = $passed = $total = 0; } function &parse_options(&$argc, &$argv) { $options = array(); while ($argc > 0 && ($opt = substr($argv[0], 0, 2)) == "--") { $opt = array_shift($argv); $argc--; if ($arg == "--") { return $options; } if (preg_match('/^--([^=]+)=(.*)$/', $opt, $matches)) { $opt = $matches[1]; $arg = $matches[2]; } else { $arg = true; } $options[$opt] = $arg; } return $options; } function do_testing($argc, &$argv) { global $term, $windows_p, $php, $skip, $testdirs, $tmpfile, $opts, $skipped, $failed, $passed, $total, $term_bold, $term_norm; if ($argc > 1) { if (is_dir($argv[1])) { $dir = $argv[1]; } else { for ($i = 1; $i < $argc; $i++) { switch (run_test($argv[$i])) { case TEST_SKIPPED: case TEST_INTERNAL_ERROR: $skipped++; break; case TEST_FAILED: $failed++; break; case TEST_PASSED: $passed++; break; } $total++; } } } else { $dir = $GLOBALS["TOP_SRCDIR"]; } if ($dir) { find_testdirs($dir); for ($i = 0; $i < sizeof($testdirs); $i++) { run_tests_in_dir($testdirs[$i]); } } $counting = $total - $skipped; if ($counting <= 0) { t_writeln("No tests were run."); return; } $total_d = (double)$total; $counting_d = (double)$counting; $passed_p = 100 * ($passed / $counting_d); $failed_p = 100 * ($failed / $counting_d); $skipped_p = 100 * ($skipped / $total_d); $passed_pstr = sprintf($passed_p < 10.0 ? "%1.1f" : "%3.0f", $passed_p); $failed_pstr = sprintf($failed_p < 10.0 ? "%1.1f" : "%3.0f", $failed_p); $skipped_pstr = sprintf($skipped_p < 10.0 ? "%1.1f" : "%3.0f", $skipped_p); t_writeln("TEST RESULT SUMMARY"); t_writeln("============================="); t_writeln(sprintf("Number of tests: %4d", $total)); t_writeln(sprintf("Tests skipped: %4d (%s%%)", $skipped, $skipped_pstr)); t_writeln(sprintf("Tests failed: %4d (%s%%)", $failed, $failed_pstr)); t_writeln(sprintf("Tests passed: %4d (%s%%)", $passed, $passed_pstr)); } function find_testdirs($dir = '.', $first_pass = true) { global $testdirs, $skip; if ($first_pass && is_dir($dir)) { $testdirs[] = $dir; } $dp = @opendir($dir); if (!$dp) { print "Warning: could not open directory $dir\n"; return false; } while ($ent = readdir($dp)) { $path = "$dir/$ent"; if ((isset($skip[$ent]) && $skip[$ent]) || substr($ent, 0, 1) == "." || !is_dir($path)) { continue; } if (strstr("/$path/", "/tests/")) { $testdirs[] = $path; } find_testdirs($path, false); } closedir($dp); } function run_tests_in_dir($dir = '.') { global $skip, $skipped, $failed, $passed, $total, $opts, $tests_in_dir; $dp = opendir($dir); if (!$dp) { print "Warning: could not run tests in $dir\n"; return false; } $testfiles = array(); while ($ent = readdir($dp)) { if ((isset($skip[$ent]) && $skip[$ent]) || substr($ent, 0, 1) == "." || substr($ent, -5) != ".phpt") { continue; } $testfiles[] = "$dir/$ent"; if(isset($tests_in_dir[$dir])) $tests_in_dir[$dir]++; else $tests_in_dir[$dir]=1; } closedir($dp); if (isset($tests_in_dir[$dir]) && ($tests_in_dir[$dir] == 0)) { return true; } $oskipped = $skipped; t_writeln("%bRunning tests in $dir%B"); t_writeln("=================".str_repeat("=", strlen($dir))); sort($testfiles); for ($i = 0; $i < sizeof($testfiles); $i++) { switch (run_test($testfiles[$i])) { case TEST_SKIPPED: case TEST_INTERNAL_ERROR: $skipped++; break; case TEST_FAILED: $failed++; break; case TEST_PASSED: $passed++; break; } $total++; } if ($oskipped + (isset($tests_in_dir[$dir])?$tests_in_dir[$dir]:0) == $skipped) { t_writeln("(all skipped)"); } t_writeln(""); return true; } function skip_headers($fp) { while (!feof($fp)) { if (trim(fgets($fp, 1024)) == "") { break; } } } function delete_tmpfiles() { global $tmpfile; reset($tmpfile); while (list($k, $v) = each($tmpfile)) { if (file_exists($v)) { //print "unlink($v): "; var_dump(unlink($v)); unlink($v); } } } /** * Compares two files, ignoring blank lines. * * @param $file1 string name of first file to compare * @param $file2 string name of second file to compare * * @return bool whether the files were "equal" */ function compare_results($file1, $file2) { $data1 = $data2 = ""; if (!($fp1 = @fopen($file1, "r")) || !($fp2 = @fopen($file2, "r"))) { return false; } while (!(feof($fp1) || feof($fp2))) { if (!feof($fp1) && trim($line1 = fgets($fp1, 10240)) != "") { //print "adding line1 $line1\n"; $data1 .= $line1; } if (!feof($fp2) && trim($line2 = fgets($fp2, 10240)) != "") { //print "adding line2 $line2\n"; $data2 .= $line2; } } fclose($fp1); fclose($fp2); if (trim($data1) != trim($data2)) { //print "data1=";var_dump($data1); //print "data2=";var_dump($data2); return false; } return true; } function run_test($file) { global $php, $tmpfile, $term_bold, $term_norm; $variables = array("TEST", "POST", "GET", "FILE", "EXPECT", "SKIPIF", "OUTPUT"); $fp = @fopen($file, "r"); if (!$fp) { return TEST_INTERNAL_ERROR; } $tmpdir = dirname($file); $tmpfix = "phpt."; $tmpfile["FILE"] = tempnam($tmpdir, $tmpfix); $tmpfile["SKIPIF"] = tempnam($tmpdir, $tmpfix); $tmpfile["POST"] = tempnam($tmpdir, $tmpfix); $tmpfile["EXPECT"] = tempnam($tmpdir, $tmpfix); $tmpfile["OUTPUT"] = tempnam($tmpdir, $tmpfix); while ($line = fgets($fp, 4096)) { if (preg_match('/^--([A-Z]+)--$/', $line, $matches)) { $var = $matches[1]; if (isset($tmpfile[$var]) && $tmpfile[$var]) { $fps[$var] = @fopen($tmpfile[$var], "w"); } else { $$var = ''; } } else { if (isset($var) && $var) { if ($var == "POST") { $line = trim($line); } if (isset($fps[$var]) && $fps[$var]) { fwrite($fps[$var], $line); } else { $$var .= $line; } } } } if(isset($fps) && is_array($fps)) { reset($fps); while (list($k, $v) = each($fps)) { if (is_resource($v)) { fclose($v); } } } putenv("PHP_TEST=1"); putenv("REDIRECT_STATUS=1"); putenv("CONTENT_LENGTH="); putenv("QUERY_STRING=".(isset($GET)?$GET:"")); if (isset($fps["SKIPIF"])) { $tmpfile["SKIPIF_OUTPUT"] = tempnam($tmpdir, $tmpfix); putenv("REQUEST_METHOD=GET"); putenv("CONTENT_TYPE="); putenv("PATH_TRANSLATED=$tmpfile[SKIPIF]"); putenv("SCRIPT_FILENAME=$tmpfile[SKIPIF]"); $skipifcmd = "$php -q -f $tmpfile[SKIPIF] > $tmpfile[SKIPIF_OUTPUT]"; system($skipifcmd, $ret); $sp = @fopen($tmpfile["SKIPIF_OUTPUT"], "r"); if ($sp) { skip_headers($sp); $skip = trim(fgets($sp, 1024)); fclose($sp); if ($skip == "skip") { delete_tmpfiles(); return TEST_SKIPPED; } } } putenv("PATH_TRANSLATED=$tmpfile[FILE]"); putenv("SCRIPT_FILENAME=$tmpfile[FILE]"); if (isset($fps["POST"])) { putenv("REQUEST_METHOD=POST"); putenv("CONTENT_TYPE=application/x-www-form-urlencoded"); putenv("CONTENT_LENGTH=".filesize($tmpfile["POST"])); } else { putenv("REQUEST_METHOD=GET"); putenv("CONTENT_TYPE="); putenv("CONTENT_LENGTH="); } putenv("a="); putenv("b="); putenv("c="); putenv("d="); if (isset($fps["POST"])) { $cmd = "$php -f $tmpfile[FILE] < $tmpfile[POST]"; } else { $cmd = "$php -f $tmpfile[FILE]"; } $ofp = @fopen($tmpfile["OUTPUT"], "w"); if (!$ofp) { t_writeln("Error: could not write to output file"); delete_tmpfiles(); return TEST_INTERNAL_ERROR; } $cp = popen($cmd, "r"); if (!$cp) { t_writeln("Error: could not execute: $cmd"); delete_tmpfiles(); return TEST_INTERNAL_ERROR; } skip_headers($cp); while ($data = fread($cp, 2048)) { fwrite($ofp, $data); } fclose($ofp); pclose($cp); $desc = isset($TEST)?trim($TEST):""; $outfile = preg_replace('/\.phpt$/', '.out', $file); $expectfile = preg_replace('/\.phpt$/', '.exp', $file); $phpfile = preg_replace('/\.phpt$/', '.php', $file); if (compare_results($tmpfile["OUTPUT"], $tmpfile["EXPECT"])) { $status = TEST_PASSED; $text = "passed"; $pre = $post = ""; if (file_exists($outfile)) { unlink($outfile); } if (file_exists($expectfile)) { unlink($expectfile); } if (file_exists($phpfile)) { unlink($phpfile); } } else { //system("env"); $status = TEST_FAILED; $text = "failed"; $pre = $term_bold; $post = $term_norm; $desc .= " (".basename($file).")"; if (file_exists($outfile)) { unlink($outfile); } copy($tmpfile["OUTPUT"], $outfile); copy($tmpfile["EXPECT"], $expectfile); copy($tmpfile["FILE"], $phpfile); } t_writeln(sprintf("%s%-68s ... %s%s", $pre, substr($desc, 0, 68), $text, $post)); // if ($status == TEST_FAILED) { // for ($i = 0; $i < sizeof($variables); $i++) { // $var = $variables[$i]; // print "$var:\n"; // if ($tmpfile[$var]) { // if (file_exists($tmpfile[$var])) { // system("cat ".$tmpfile[$var]); // } // } else { // print $$var; // } // } // print "--\n\n"; // } delete_tmpfiles(); return $status; } ?>
« previous php.qa (#2170) next »