mirror of
https://github.com/ezyang/htmlpurifier.git
synced 2025-08-05 05:37:49 +02:00
[1.7.0] Fix bug in HTMLPurifier_Harness that causes certain aspects of $input to change after parsing
- Add makeLookup() convenience function to HTMLModule - Relocate SGML exclusion comment - Add preliminary Bdo module test git-svn-id: http://htmlpurifier.org/svnroot/htmlpurifier/trunk@1049 48356398-32a2-884e-a903-53898d9a118a
This commit is contained in:
30
tests/HTMLPurifier/HTMLModule/BdoTest.php
Normal file
30
tests/HTMLPurifier/HTMLModule/BdoTest.php
Normal file
@@ -0,0 +1,30 @@
|
||||
<?php
|
||||
|
||||
require_once 'HTMLPurifier/HTMLModuleHarness.php';
|
||||
|
||||
class HTMLPurifier_HTMLModule_BdoTest extends HTMLPurifier_HTMLModuleHarness
|
||||
{
|
||||
|
||||
function test() {
|
||||
|
||||
$this->assertResult(
|
||||
'<span>
|
||||
<bdo
|
||||
id="test-id"
|
||||
class="class-name"
|
||||
style="font-weight:bold;"
|
||||
title="Title of tag"
|
||||
lang="en"
|
||||
xml:lang="en"
|
||||
dir="rtl"
|
||||
>
|
||||
#PCDATA <span>Inline</span>
|
||||
</bdo>
|
||||
</span>', true, array('Attr.EnableID' => true)
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
?>
|
14
tests/HTMLPurifier/HTMLModuleHarness.php
Normal file
14
tests/HTMLPurifier/HTMLModuleHarness.php
Normal file
@@ -0,0 +1,14 @@
|
||||
<?php
|
||||
|
||||
require_once 'HTMLPurifier/StrategyHarness.php';
|
||||
require_once 'HTMLPurifier/Strategy/Core.php';
|
||||
|
||||
class HTMLPurifier_HTMLModuleHarness extends HTMLPurifier_StrategyHarness
|
||||
{
|
||||
function setup() {
|
||||
parent::setup();
|
||||
$this->obj = new HTMLPurifier_Strategy_Core();
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
@@ -121,6 +121,30 @@ class HTMLPurifier_HTMLModuleTest extends UnitTestCase
|
||||
|
||||
}
|
||||
|
||||
function test_makeLookup() {
|
||||
|
||||
$module = new HTMLPurifier_HTMLModule();
|
||||
|
||||
$this->assertIdentical(
|
||||
$module->makeLookup('foo'),
|
||||
array('foo' => true)
|
||||
);
|
||||
$this->assertIdentical(
|
||||
$module->makeLookup(array('foo')),
|
||||
array('foo' => true)
|
||||
);
|
||||
|
||||
$this->assertIdentical(
|
||||
$module->makeLookup('foo', 'two'),
|
||||
array('foo' => true, 'two' => true)
|
||||
);
|
||||
$this->assertIdentical(
|
||||
$module->makeLookup(array('foo', 'two')),
|
||||
array('foo' => true, 'two' => true)
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
?>
|
@@ -73,12 +73,17 @@ class HTMLPurifier_Harness extends UnitTestCase
|
||||
$context->loadArray($context_array);
|
||||
|
||||
if ($this->to_tokens && is_string($input)) {
|
||||
$input = $this->lexer->tokenizeHTML($input, $config, $context);
|
||||
// $func may cause $input to change, so "clone" another copy
|
||||
// to sacrifice
|
||||
$input = $this->lexer->tokenizeHTML($s = $input, $config, $context);
|
||||
$input_c = $this->lexer->tokenizeHTML($s, $config, $context);
|
||||
} else {
|
||||
$input_c = $input;
|
||||
}
|
||||
|
||||
// call the function
|
||||
$func = $this->func;
|
||||
$result = $this->obj->$func($input, $config, $context);
|
||||
$result = $this->obj->$func($input_c, $config, $context);
|
||||
|
||||
// test a bool result
|
||||
if (is_bool($result)) {
|
||||
|
Reference in New Issue
Block a user