1
0
mirror of https://github.com/ezyang/htmlpurifier.git synced 2025-08-04 21:28:06 +02:00

- Gracefully error out of obscure bug involving non-static autoloaders

- Test multiple autoloaders
- Remove local URL test; doesn't work for other people

git-svn-id: http://htmlpurifier.org/svnroot/htmlpurifier/trunk@1565 48356398-32a2-884e-a903-53898d9a118a
This commit is contained in:
Edward Z. Yang
2008-02-18 02:33:50 +00:00
parent a4abc45505
commit 21cf2c94d4
5 changed files with 68 additions and 5 deletions

View File

@@ -12,6 +12,16 @@ function my_autoload($class) {
eval("class $class {}");
return true;
}
class MyClass {
public static function myAutoload($class) {
if ($class == 'Foo') {
echo "Special autoloading Foo..." . PHP_EOL;
eval("class $class {}");
}
}
}
spl_autoload_register(array('MyClass', 'myAutoload'));
spl_autoload_register('my_autoload');
require '../library/HTMLPurifier.auto.php';
@@ -20,9 +30,11 @@ $config = HTMLPurifier_Config::createDefault();
$purifier = new HTMLPurifier($config);
echo $purifier->purify('<b>Salsa!') . PHP_EOL;
// purposely invoke older autoload
// purposely invoke older autoloads
$foo = new Foo();
$bar = new Bar();
--EXPECT--
<b>Salsa!</b>
Special autoloading Foo...
Autoloading Bar...

View File

@@ -0,0 +1,29 @@
--TEST--
Error when registering autoload with non-static autoload already on SPL stack
--SKIPIF--
<?php
if (!function_exists('spl_autoload_register')) {
echo "skip - spl_autoload_register() not available";
}
--FILE--
<?php
class NotStatic
{
public function autoload($class) {
echo "Autoloading... $class" . PHP_EOL;
eval("class $class {}");
}
}
$obj = new NotStatic();
spl_autoload_register(array($obj, 'autoload'));
try {
require '../library/HTMLPurifier.auto.php';
} catch (Exception $e) {
echo 'Caught error gracefully';
assert('strpos($e->getMessage(), "44144") !== false');
}
--EXPECT--
Caught error gracefully