2 new revisions:
Revision: b6540903bdc7
Author: Pekka Klärck
Date: Tue Jan 17 05:44:54 2012
Log: HtmlWriter: 1) test cleanup and more tests, 2) fixed line
separator wi...
http://code.google.com/p/robotframework/source/detail?r=b6540903bdc7
Revision: 764ef60fa3bb
Author: Pekka Klärck
Date: Tue Jan 17 05:44:59 2012
Log: Automated merge with https://code.google.com/p/robotframework/
http://code.google.com/p/robotframework/source/detail?r=764ef60fa3bb
==============================================================================
Revision: b6540903bdc7
Author: Pekka Klärck
Date: Tue Jan 17 05:44:54 2012
Log: HtmlWriter: 1) test cleanup and more tests, 2) fixed line
separator with end() and element()
http://code.google.com/p/robotframework/source/detail?r=b6540903bdc7
Modified:
/src/robot/utils/htmlwriter.py
/utest/utils/test_htmlwriter.py
=======================================
--- /src/robot/utils/htmlwriter.py Tue Jan 17 04:53:24 2012
+++ /src/robot/utils/htmlwriter.py Tue Jan 17 05:44:54 2012
@@ -33,7 +33,7 @@
self._write(html_escape(content) if escape else content)
def end(self, name, newline=True):
- self._write('</%s>%s' % (name, os.linesep if newline else ''))
+ self._write('</%s>%s' % (name, self._line_separator if newline
else ''))
def element(self, name, content=None, attrs=None, escape=True,
newline=True):
self.start(name, attrs, newline=False)
=======================================
--- /utest/utils/test_htmlwriter.py Tue Dec 13 04:06:34 2011
+++ /utest/utils/test_htmlwriter.py Tue Jan 17 05:44:54 2012
@@ -1,32 +1,16 @@
-import os, sys, unittest
+import os
+import unittest
from StringIO import StringIO
-from robot.errors import *
-from robot import utils
from robot.utils import HtmlWriter
-from robot.utils.asserts import *
-
-
-class IOMock:
-
- def __init__(self):
- self.texts = []
-
- def write(self, text):
- self.texts.append(text)
-
- def close(self):
- pass
-
- def getvalue(self):
- return ''.join(self.texts)
+from robot.utils.asserts import assert_equals
class TestHtmlWriter(unittest.TestCase):
def setUp(self):
- self.out = IOMock()
- self.writer = HtmlWriter(self.out)
+ self.output = StringIO()
+ self.writer = HtmlWriter(self.output)
def test_start(self):
self.writer.start('r')
@@ -37,21 +21,16 @@
self._verify('<robot>')
def test_start_with_attribute(self):
- self.writer.start('robot', newline=False)
- self.writer.start('suite', {'name': 'Suite1'}, False)
- self._verify('<robot><suite name="Suite1">')
-
- def test_start_with_attribute2(self):
- self.writer.start('test case', {'class': '123'})
- self._verify('<test case class="123">\n')
+ self.writer.start('robot', {'name': 'Suite1'}, False)
+ self._verify('<robot name="Suite1">')
def test_start_with_attributes(self):
- self.writer.start('test case', {'class': '123', 'x': 'y'})
- self._verify('<test case class="123" x="y">\n')
+ self.writer.start('test', {'class': '123', 'x': 'y', 'a': 'z'})
+ self._verify('<test a="z" class="123" x="y">\n')
def test_start_with_non_ascii_attributes(self):
- self.writer.start('test', {'name': u'\u00A7', u'\u00E4':
u'\u00A7'})
- self._verify(u'<test name="\u00A7" \u00E4="\u00A7">\n')
+ self.writer.start('test', {'name': u'\xA7', u'\xE4': u'\xA7'})
+ self._verify(u'<test name="\xA7" \xE4="\xA7">\n')
def test_start_with_quotes_in_attribute_value(self):
self.writer.start('x', {'q':'"', 'qs': '""""', 'a': "'"}, False)
@@ -75,6 +54,10 @@
self.writer.end('robot', newline=False)
self._verify('<robot></robot>')
+ def test_end_alone(self):
+ self.writer.end('suite', newline=False)
+ self._verify('</suite>')
+
def test_content(self):
self.writer.start('robot')
self.writer.content('Hello world!')
@@ -82,10 +65,10 @@
def test_content_with_non_ascii_data(self):
self.writer.start('robot', newline=False)
- self.writer.content(u'Circle is 360\u00B0. ')
- self.writer.content(u'Hyv\u00E4\u00E4 \u00FC\u00F6t\u00E4!')
+ self.writer.content(u'Circle is 360\xB0. ')
+ self.writer.content(u'Hyv\xE4\xE4 \xFC\xF6t\xE4!')
self.writer.end('robot', newline=False)
- expected = u'Circle is 360\u00B0. Hyv\u00E4\u00E4
\u00FC\u00F6t\u00E4!'
+ expected = u'Circle is 360\xB0. Hyv\xE4\xE4 \xFC\xF6t\xE4!'
self._verify('<robot>%s</robot>' % expected)
def test_multiple_content(self):
@@ -98,17 +81,48 @@
self.writer.content('Me, "Myself" & I > U')
self._verify('Me, "Myself" & I > U')
+ def test_content_alone(self):
+ self.writer.content('hello')
+ self._verify('hello')
+
def test_none_content(self):
self.writer.start('robot')
self.writer.content(None)
+ self.writer.content('')
self._verify('<robot>\n')
- def test_close_empty(self):
- self.writer.end('suite', False)
- self._verify('</suite>')
+ def test_element(self):
+ self.writer.element('div', 'content', {'id': '1'})
+ self.writer.element('i', newline=False)
+ self._verify('<div id="1">content</div>\n<i></i>')
+
+ def test_line_separator(self):
+ self._test_line_separator('\n')
+ self._test_line_separator('LINESEP')
+
+ def _test_line_separator(self, linesep):
+ self.output = StringIO()
+ writer = HtmlWriter(self.output, line_separator=linesep)
+ writer.start('b')
+ writer.end('b')
+ writer.element('i')
+ self._verify('<b>%(LS)s</b>%(LS)s<i></i>%(LS)s' % {'LS': linesep})
+
+ def test_encoding(self):
+ self._test_encoding('UTF-8')
+ self._test_encoding('ISO-8859-1')
+
+ def _test_encoding(self, encoding):
+ self.output = StringIO()
+ writer = HtmlWriter(self.output, encoding=encoding)
+ writer.start(u'p', attrs={'name': u'hyv\xe4\xe4'}, newline=False)
+ writer.content(u'y\xf6')
+ writer.element('i', u't\xe4', newline=False)
+ writer.end('p', newline=False)
+ self._verify(u'<p
name="hyv\xe4\xe4">y\xf6<i>t\xe4</i></p>'.encode(encoding))
def _verify(self, expected):
- assert_equals(self.out.getvalue(), expected.replace('\n',
os.linesep))
+ assert_equals(self.output.getvalue(), expected.replace('\n',
os.linesep))
if __name__ == '__main__':
==============================================================================
Revision: 764ef60fa3bb
Author: Pekka Klärck
Date: Tue Jan 17 05:44:59 2012
Log: Automated merge with https://code.google.com/p/robotframework/
http://code.google.com/p/robotframework/source/detail?r=764ef60fa3bb