123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203 |
- <?php
- /**
- * A driver for the PHP OpenID unit tests.
- *
- * PHP versions 4 and 5
- *
- * LICENSE: See the COPYING file included in this distribution.
- *
- * @package OpenID
- * @author JanRain, Inc. <openid@janrain.com>
- * @copyright 2005-2008 Janrain, Inc.
- * @license http://www.apache.org/licenses/LICENSE-2.0 Apache
- */
- require_once 'PHPUnit.php';
- require_once 'PHPUnit/GUI/HTML.php';
- error_reporting(E_ALL);
- global $__test_errors;
- $__test_errors = array();
- function __handler($code, $message)
- {
- global $__test_errors;
- if ($code == E_USER_WARNING) {
- $__test_errors[] = $message;
- }
- }
- function __raiseError($message)
- {
- set_error_handler('__handler');
- trigger_error($message, E_USER_WARNING);
- restore_error_handler();
- }
- function __getError()
- {
- global $__test_errors;
- if ($__test_errors) {
- return array_pop($__test_errors);
- }
- return null;
- }
- /**
- * Load the tests that are defined in the named modules.
- *
- * If you have Tests/Foo.php which defines a test class called
- * Tests_Foo, the call would look like:
- *
- * loadTests('Tests/', array('Foo'))
- *
- * @param string $test_dir The root of the test hierarchy. Must end
- * with a /
- *
- * @param array $test_names The names of the modules in which the
- * tests are defined. This should not include the root of the test
- * hierarchy.
- */
- function loadTests($test_dir, $test_names)
- {
- global $_tests;
- $suites = array();
- foreach ($test_names as $filename) {
- $filename = $test_dir . $filename . '.php';
- if (!global_require_once($filename)) {
- continue;
- }
- $class_name = str_replace('/', '_', $filename);
- $class_name = basename($class_name, '.php');
- $suites[] = makeSuite($class_name);
- }
- return $suites;
- }
- function makeSuite($class_name) {
- $test = new $class_name($class_name);
- if (is_a($test, 'PHPUnit_TestCase')) {
- $s = new PHPUnit_TestSuite();
- $s->setName($class_name);
- $s->addTestSuite($class_name);
- $test = $s;
- }
- $tc_array_name = $class_name . '_other';
- if (array_key_exists($tc_array_name, $GLOBALS) &&
- is_array($GLOBALS[$tc_array_name])) {
- foreach ($GLOBALS[$tc_array_name] as $tc) {
- $test->addTestSuite(get_class($tc));
- }
- }
- return $test;
- }
- function global_require_once($name)
- {
- $f = include_once $name;
- if (!$f) {
- print("global require once skipping $name\n");
- return false;
- }
- foreach (get_defined_vars() as $k => $v) {
- if (!in_array($k, array('name', 'GLOBALS'))) {
- $GLOBALS[$k] = $v;
- }
- }
- return true;
- }
- $_tests = array(
- array(
- 'dir' => 'Tests/Auth/OpenID/',
- 'files' => array(
- 'Association',
- 'AssociationResponse',
- 'AuthRequest',
- 'AX',
- 'BigMath',
- 'Consumer',
- 'CryptUtil',
- 'DiffieHellman',
- 'Discover_OpenID',
- 'Extension',
- 'HMAC',
- 'KVForm',
- 'Message',
- 'Negotiation',
- 'Nonce',
- 'OpenID_Yadis',
- 'PAPE',
- 'Parse',
- 'RPVerify',
- 'Server',
- 'SReg',
- 'StoreTest',
- 'TrustRoot',
- 'URINorm',
- 'Util',
- 'VerifyDisco'),
- ),
- array(
- 'dir' => 'Tests/Auth/Yadis/',
- 'files' => array(
- 'ParseHTML',
- 'XRDS',
- 'Yadis',
- 'Discover_Yadis',
- 'XRI'
- )
- )
- );
- function selectTests($package, $names)
- {
- global $_tests;
- $lnames = array_map('strtolower', $names);
- $include = array();
- $exclude = array();
- foreach ($package['files'] as $t) {
- $l = strtolower($t);
- if (in_array($l, $lnames)) {
- $include[] = $t;
- }
- if (in_array("/$l", $lnames)) {
- $exclude[] = $t;
- }
- }
- return array_diff($include, $exclude);
- }
- // Load OpenID library tests
- function loadSuite($names=null)
- {
- global $_tests;
- $result = array();
- foreach ($_tests as $package) {
- if (!$names) {
- $selected = $package['files'];
- } else {
- $selected = selectTests($package, $names);
- }
- $result = array_merge($result, loadTests($package['dir'], $selected));
- }
- return $result;
- }
- ?>
|