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" &amp; I &gt; 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


Reply via email to