diff options
author | Cash Costello <cash.costello@gmail.com> | 2011-12-11 06:38:23 -0500 |
---|---|---|
committer | Cash Costello <cash.costello@gmail.com> | 2011-12-11 06:38:23 -0500 |
commit | d9bf22a0e29c2a70049443a0ae8521a2c0492c8b (patch) | |
tree | c7599a9169d5def7df56c480ad6d67f312443d6f /models/openid-php-openid-782224d/Tests/TestDriver.php | |
download | elgg-d9bf22a0e29c2a70049443a0ae8521a2c0492c8b.tar.gz elgg-d9bf22a0e29c2a70049443a0ae8521a2c0492c8b.tar.bz2 |
initial commit for git repository
Diffstat (limited to 'models/openid-php-openid-782224d/Tests/TestDriver.php')
-rw-r--r-- | models/openid-php-openid-782224d/Tests/TestDriver.php | 202 |
1 files changed, 202 insertions, 0 deletions
diff --git a/models/openid-php-openid-782224d/Tests/TestDriver.php b/models/openid-php-openid-782224d/Tests/TestDriver.php new file mode 100644 index 000000000..1a1f5b1de --- /dev/null +++ b/models/openid-php-openid-782224d/Tests/TestDriver.php @@ -0,0 +1,202 @@ +<?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/Framework.php'; +//require_once 'PHPUnit/GUI/HTML.php'; + +error_reporting(E_ALL | E_STRICT); + +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_Framework_TestCase')) { + $s = new PHPUnit_Framework_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; +} + |