failures() as $failure) { echo $failure->toString(); } foreach ($this->errors() as $failure) { echo $failure->toString(); } } } function microtime_float() { list($usec, $sec) = explode(" ", microtime()); return ((float)$usec + (float)$sec); } $longopts = array('no-math', 'buggy-gmp', 'no-curl', 'math-lib=', 'insecure-rand', 'thorough', 'extra-tests='); $con = new Console_Getopt; $args = $con->readPHPArgv(); array_shift($args); $options = $con->getopt2($args, "", $longopts); if (PEAR::isError($options)) { print $options->message . "\n"; exit(1); } list($flags, $tests_to_run) = $options; $math_type = array(); $extra_test_modules = array(); $thorough = false; foreach ($flags as $flag) { list($option, $value) = $flag; switch ($option) { case '--insecure-rand': define('Auth_OpenID_RAND_SOURCE', null); break; case '--no-math': define('Auth_OpenID_NO_MATH_SUPPORT', true); break; case '--buggy-gmp': define('Auth_OpenID_BUGGY_GMP', true); break; case '--no-curl': define('Auth_Yadis_CURL_OVERRIDE', true); break; case '--thorough': define('Tests_Auth_OpenID_thorough', true); break; case '--extra-tests': $extra_test_modules[] = $value; break; default: print "Unrecognized option: $option\n"; exit(1); } } // ******** Math library selection *********** // XXX FIXME // case '--math-lib': // $math_type[] = $value; // break; if ($math_type && false) { if (defined('Auth_OpenID_NO_MATH_SUPPORT')) { print "--no-math and --math-lib are mutually exclusive\n"; exit(1); } require_once('Auth/OpenID/BigMath.php'); $new_extensions = array(); foreach ($math_type as $lib) { $found = false; foreach (Auth_OpenID_math_extensions() as $ext) { if ($ext['extension'] == $lib) { $new_extensions[] = $ext; $found = true; break; } } if (!$found) { print "Unknown math library specified: $lib\n"; exit(1); } } $_Auth_OpenID_math_extensions = $new_extensions; } // ******** End math library selection ********** $suites = loadSuite($tests_to_run); // ******** Load additional test suites ******** foreach ($extra_test_modules as $filename) { if (!global_require_once($filename)) { continue; } $module_name = basename($filename, '.php'); $class_name = "Tests_Auth_OpenID_${module_name}_Test"; $suites[] = makeSuite($class_name); } $totals = array( 'run' => 0, 'error' => 0, 'failure' => 0, 'time' => 0 ); foreach ($suites as $suite) { $name = $suite->getName(); echo "========================================== Test suite: $name ------------------------------------------ "; $result = new TextTestResult(); $before = microtime_float(); $suite->run($result); $after = microtime_float(); $run = $result->count(); $error = $result->errorCount(); $failure = $result->failureCount(); $delta = $after - $before; $totals['run'] += $run; $totals['error'] += $error; $totals['failure'] += $failure; $totals['time'] += $delta; $human_delta = round($delta, 3); echo "\nRan $run tests in $human_delta seconds"; if ($error || $failure) { echo " with $error errors, $failure failures"; } echo " ========================================== "; $failures = $result->failures(); foreach($failures as $failure) { $test = $failure->failedTest(); $testName = $test->getName(); $exception = $failure->thrownException(); echo "* Failure in $testName: $exception "; } } $before = microtime_float(); $run = $totals['run']; $error = $totals['error']; $failure = $totals['failure']; $time = round($totals['time'], 3); echo "Ran a total of $run tests in $time seconds with $error errors, $failure failures\n"; if ($totals['error'] || $totals['failure']) { exit(1); } ?>