Mercurial > genshi > genshi-test
changeset 908:5fd4a1e28351
Fix for bug with the `HTMLFormFiller` in the handling of textareas. Thanks to Trevor Morgan for pointing this out on the mailing list.
author | cmlenz |
---|---|
date | Mon, 10 May 2010 14:02:55 +0000 |
parents | 2772fa7c10a3 |
children | 585fdbd30e05 |
files | ChangeLog genshi/filters/html.py genshi/filters/tests/html.py |
diffstat | 3 files changed, 32 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +Version 0.6.1 +http://svn.edgewall.org/repos/genshi/tags/0.6.1/ +(???, from branches/stable/0.6.x) + + * Fix for error in how `HTMLFormFiller` would handle `textarea` elements if + no value was not supplied form them. + + Version 0.6 http://svn.edgewall.org/repos/genshi/tags/0.6.0/ (Apr 22 2010, from branches/stable/0.6.x)
--- a/genshi/filters/html.py +++ b/genshi/filters/html.py @@ -183,9 +183,10 @@ no_option_value = False option_start = option_value = None option_text = [] - elif tagname == 'textarea': + elif in_textarea and tagname == 'textarea': if textarea_value: yield TEXT, unicode(textarea_value), pos + textarea_value = None in_textarea = False yield kind, data, pos
--- a/genshi/filters/tests/html.py +++ b/genshi/filters/tests/html.py @@ -92,6 +92,28 @@ <textarea name="foo">bar</textarea> </p></form>""", html.render()) + def test_fill_textarea_multiple(self): + # Ensure that the subsequent textarea doesn't get the data from the + # first + html = HTML("""<form><p> + <textarea name="foo"></textarea> + <textarea name="bar"></textarea> + </p></form>""") | HTMLFormFiller(data={'foo': 'Some text'}) + self.assertEquals("""<form><p> + <textarea name="foo">Some text</textarea> + <textarea name="bar"/> + </p></form>""", html.render()) + + def test_fill_textarea_preserve_original(self): + html = HTML("""<form><p> + <textarea name="foo"></textarea> + <textarea name="bar">Original value</textarea> + </p></form>""") | HTMLFormFiller(data={'foo': 'Some text'}) + self.assertEquals("""<form><p> + <textarea name="foo">Some text</textarea> + <textarea name="bar">Original value</textarea> + </p></form>""", html.render()) + def test_fill_input_checkbox_no_value(self): html = HTML("""<form><p> <input type="checkbox" name="foo" />