From 9af9c505e1c3865af89c2d0b5c31db4ff1feb302 Mon Sep 17 00:00:00 2001 From: "Edward Z. Yang" Date: Sat, 30 Sep 2006 18:55:17 +0000 Subject: [PATCH] [1.1.2] - Added notes on HTML versus XML attribute whitespace handling - Noted that HTMLPurifier_ChildDef_Custom isn't being used - Noted that config object's definitions are cached versions - Hooked up HTMLPurifier_ChildDef_Custom's unit tests (they weren't being run) - Tester named "HTML Purifier" not "HTMLPurifier" git-svn-id: http://htmlpurifier.org/svnroot/htmlpurifier/trunk@472 48356398-32a2-884e-a903-53898d9a118a --- NEWS | 5 +++++ library/HTMLPurifier/AttrDef.php | 11 ++++++++++- library/HTMLPurifier/ChildDef.php | 2 ++ library/HTMLPurifier/Config.php | 4 ++-- tests/HTMLPurifier/ChildDefTest.php | 7 ++++++- tests/HTMLPurifier/ConfigTest.php | 12 ++++++++++++ tests/index.php | 4 ++-- 7 files changed, 39 insertions(+), 6 deletions(-) diff --git a/NEWS b/NEWS index d8466ba2..2bc53ee5 100644 --- a/NEWS +++ b/NEWS @@ -18,10 +18,15 @@ NEWS ( CHANGELOG and HISTORY ) HTMLPurifier + INSTALL document rewritten + TODO added semi-lossy conversion + API Doxygen docs' file exclusions updated + + Added notes on HTML versus XML attribute whitespace handling + + Noted that HTMLPurifier_ChildDef_Custom isn't being used + + Noted that config object's definitions are cached versions - Fixed lack of attribute parsing in HTMLPurifier_Lexer_PEARSax3 - ftp:// URIs now have their typecodes checked +- Hooked up HTMLPurifier_ChildDef_Custom's unit tests (they weren't being run) . Line endings standardized throughout project (svn:eol-style standardized) . Refactored parseData() to general Lexer class +. Tester named "HTML Purifier" not "HTMLPurifier" 1.1.1, released 2006-09-24 ! Configuration option to optionally Tidy up output for indentation to make up diff --git a/library/HTMLPurifier/AttrDef.php b/library/HTMLPurifier/AttrDef.php index 31762ec4..3d04c752 100644 --- a/library/HTMLPurifier/AttrDef.php +++ b/library/HTMLPurifier/AttrDef.php @@ -48,7 +48,16 @@ class HTMLPurifier_AttrDef * * @note This method is not entirely standards compliant, as trim() removes * more types of whitespace than specified in the spec. In practice, - * this is rarely a problem. + * this is rarely a problem, as those extra characters usually have + * already been removed by HTMLPurifier_Encoder. + * + * @warning This processing is inconsistent with XML's whitespace handling + * as specified by section 3.3.3 and referenced XHTML 1.0 section + * 4.7. Compliant processing requires all line breaks normalized + * to "\n", so the fix is not as simple as fixing it in this + * function. Trim and whitespace collapsing are supposed to only + * occur in NMTOKENs. However, note that we are NOT necessarily + * parsing XML, thus, this behavior may still be correct. * * @public */ diff --git a/library/HTMLPurifier/ChildDef.php b/library/HTMLPurifier/ChildDef.php index e6cc93f8..793ec51a 100644 --- a/library/HTMLPurifier/ChildDef.php +++ b/library/HTMLPurifier/ChildDef.php @@ -56,6 +56,8 @@ class HTMLPurifier_ChildDef * * @warning Currently this class is an all or nothing proposition, that is, * it will only give a bool return value. + * @note This class is currently not used by any code, although it is unit + * tested. */ class HTMLPurifier_ChildDef_Custom extends HTMLPurifier_ChildDef { diff --git a/library/HTMLPurifier/Config.php b/library/HTMLPurifier/Config.php index 706dffce..9bffaab3 100644 --- a/library/HTMLPurifier/Config.php +++ b/library/HTMLPurifier/Config.php @@ -26,12 +26,12 @@ class HTMLPurifier_Config var $def; /** - * Instance of HTMLPurifier_HTMLDefinition + * Cached instance of HTMLPurifier_HTMLDefinition */ var $html_definition; /** - * Instance of HTMLPurifier_CSSDefinition + * Cached instance of HTMLPurifier_CSSDefinition */ var $css_definition; diff --git a/tests/HTMLPurifier/ChildDefTest.php b/tests/HTMLPurifier/ChildDefTest.php index be81831f..db00bd20 100644 --- a/tests/HTMLPurifier/ChildDefTest.php +++ b/tests/HTMLPurifier/ChildDefTest.php @@ -46,18 +46,23 @@ class HTMLPurifier_ChildDefTest extends UnitTestCase $this->def = new HTMLPurifier_ChildDef_Custom( '(a, b?, c*, d+, (a, b)*)'); + $inputs = array(); + $expect = array(); + $config = array(); + $inputs[0] = ''; $expect[0] = false; $inputs[1] = ''; $expect[1] = true; - $inputs[2] = 'Dobfoofoo'; + $inputs[2] = 'Dobfoofoo'; $expect[2] = true; $inputs[3] = ''; $expect[3] = false; + $this->assertSeries($inputs, $expect, $config); } function test_table() { diff --git a/tests/HTMLPurifier/ConfigTest.php b/tests/HTMLPurifier/ConfigTest.php index b5f606f4..6812c4d2 100644 --- a/tests/HTMLPurifier/ConfigTest.php +++ b/tests/HTMLPurifier/ConfigTest.php @@ -8,6 +8,7 @@ class HTMLPurifier_ConfigTest extends UnitTestCase var $our_copy, $old_copy; function setUp() { + // set up a dummy schema object for testing $our_copy = new HTMLPurifier_ConfigSchema(); $this->old_copy = HTMLPurifier_ConfigSchema::instance(); $this->our_copy =& HTMLPurifier_ConfigSchema::instance($our_copy); @@ -93,6 +94,17 @@ class HTMLPurifier_ConfigTest extends UnitTestCase } + function test_getDefinition() { + + $config = HTMLPurifier_Config::createDefault(); + $def = $config->getHTMLDefinition(); + $this->assertIsA($def, 'HTMLPurifier_HTMLDefinition'); + + $def = $config->getCSSDefinition(); + $this->assertIsA($def, 'HTMLPurifier_CSSDefinition'); + + } + } ?> \ No newline at end of file diff --git a/tests/index.php b/tests/index.php index 880c5a87..cdb87ec0 100644 --- a/tests/index.php +++ b/tests/index.php @@ -114,14 +114,14 @@ if (isset($_GET['file']) && isset($test_file_lookup[$_GET['file']])) { // execute only one test $test_file = $_GET['file']; - $test = new GroupTest('HTMLPurifier - ' . $test_file); + $test = new GroupTest('HTML Purifier - ' . $test_file); $path = 'HTMLPurifier/' . $test_file; require_once $path; $test->addTestClass(htmlpurifier_path2class($path)); } else { - $test = new GroupTest('HTMLPurifier'); + $test = new GroupTest('HTML Purifier'); foreach ($test_files as $test_file) { $path = 'HTMLPurifier/' . $test_file; -- 2.11.4.GIT