2 new revisions:

Revision: 480740a33dbe
Branch:   default
Author:   Pekka Klärck
Date:     Fri Nov  1 10:10:52 2013 UTC
Log: fixed XmlWriter to write preamble correctly when encoding is changed. ...
http://code.google.com/p/robotframework/source/detail?r=480740a33dbe

Revision: 78d8f49cb165
Branch:   default
Author:   Pekka Klärck
Date:     Fri Nov  1 10:11:16 2013 UTC
Log:      Automated merge with https://code.google.com/p/robotframework/
http://code.google.com/p/robotframework/source/detail?r=78d8f49cb165

==============================================================================
Revision: 480740a33dbe
Branch:   default
Author:   Pekka Klärck
Date:     Fri Nov  1 10:10:52 2013 UTC
Log: fixed XmlWriter to write preamble correctly when encoding is changed. also cleaned up XmlWriter utests a little.
http://code.google.com/p/robotframework/source/detail?r=480740a33dbe

Modified:
 /src/robot/utils/markupwriters.py
 /utest/utils/test_xmlwriter.py

=======================================
--- /src/robot/utils/markupwriters.py   Thu Jun  6 14:00:44 2013 UTC
+++ /src/robot/utils/markupwriters.py   Fri Nov  1 10:10:52 2013 UTC
@@ -91,7 +91,8 @@
 class XmlWriter(_MarkupWriter):

     def _preamble(self):
-        self._write('<?xml version="1.0" encoding="UTF-8"?>', newline=True)
+        self._write('<?xml version="1.0" encoding="%s"?>' % self._encoding,
+                    newline=True)

     def _escape(self, text):
         return xml_escape(text)
=======================================
--- /utest/utils/test_xmlwriter.py      Thu Jun  7 10:13:27 2012 UTC
+++ /utest/utils/test_xmlwriter.py      Fri Nov  1 10:10:52 2013 UTC
@@ -12,7 +12,7 @@
 class TestXmlWriter(unittest.TestCase):

     def setUp(self):
-        self.writer = XmlWriter(PATH, encoding='UTF-8')
+        self.writer = XmlWriter(PATH)

     def tearDown(self):
         self.writer.close()
@@ -22,7 +22,6 @@
         self.writer.start('name', {'attr': 'value'}, newline=False)
         self.writer.content('Some content here!!')
         self.writer.end('name')
-        self.writer.close()
self._verify_node(None, 'name', 'Some content here!!', {'attr': 'value'})

     def test_calling_content_multiple_times(self):
@@ -31,13 +30,12 @@
         self.writer.content(u'Hi again!')
         self.writer.content('\tMy name is John')
         self.writer.end('robot-log')
-        self.writer.close()
         self._verify_node(None, 'robot-log',
                           'Hello world!\nHi again!\tMy name is John')

     def test_write_element(self):
- self.writer.element('foo', 'Node\n content', {'a1':'attr1', 'a2':'attr2'})
-        self.writer.close()
+        self.writer.element('foo', 'Node\n content',
+                            {'a1': 'attr1', 'a2': 'attr2'})
         self._verify_node(None, 'foo', 'Node\n content',
                           {'a1': 'attr1', 'a2': 'attr2'})

@@ -49,9 +47,7 @@
         self.writer.end('child1')
         self.writer.element('child2', attrs={'class': 'foo'})
         self.writer.end('root')
-        self.writer.close()
-        with ETSource(PATH) as source:
-            root = ET.parse(source).getroot()
+        root = self._get_root()
         self._verify_node(root, 'root', attrs={'version': 'test'})
self._verify_node(root.find('child1'), 'child1', attrs={'my-attr': 'my value'})
         self._verify_node(root.find('child1/leaf1.1'), 'leaf1.1',
@@ -69,44 +65,34 @@
         self.writer.content('Suite 2 content')
         self.writer.end('suite')
         self.writer.end('root')
-        self.writer.close()
-        with open(PATH) as file:
-            lines = [line for line in file if line != '\n']
+        content = self._get_content()
+        lines = [line for line in content.splitlines() if line != '\n']
         assert_equal(len(lines), 6)

     def test_none_content(self):
         self.writer.element(u'robot-log', None)
-        self.writer.close()
         self._verify_node(None, 'robot-log')

     def test_content_with_invalid_command_char(self):
         self.writer.element('robot-log', '\033[31m\033[32m\033[33m\033[m')
-        self.writer.close()
         self._verify_node(None, 'robot-log', '[31m[32m[33m[m')

     def test_content_with_invalid_command_char_unicode(self):
         self.writer.element('robot-log', u'\x1b[31m\x1b[32m\x1b[33m\x1b[m')
-        self.writer.close()
         self._verify_node(None, 'robot-log', '[31m[32m[33m[m')

-    def test_content_with_unicode(self):
+    def test_content_with_non_ascii(self):
         self.writer.start('root')
-        self.writer.element(u'e', u'Circle is 360\u00B0')
-        self.writer.element(u'f', u'Hyv\u00E4\u00E4 \u00FC\u00F6t\u00E4')
+        self.writer.element(u'e', u'Circle is 360\xB0')
+        self.writer.element(u'f', u'Hyv\xE4\xE4 \xFC\xF6t\xE4')
         self.writer.end('root')
-        self.writer.close()
-        with ETSource(PATH) as source:
-            root = ET.parse(source).getroot()
-        self._verify_node(root.find('e'), 'e', u'Circle is 360\u00B0')
-        self._verify_node(root.find('f'), 'f',
-                         u'Hyv\u00E4\u00E4 \u00FC\u00F6t\u00E4')
+        root = self._get_root()
+        self._verify_node(root.find('e'), 'e', u'Circle is 360\xB0')
+ self._verify_node(root.find('f'), 'f', u'Hyv\xE4\xE4 \xFC\xF6t\xE4')

     def test_content_with_entities(self):
         self.writer.element(u'robot-log', 'Me, Myself & I > you')
-        self.writer.close()
-        with open(PATH) as file:
-            content = file.read()
-        assert_true('Me, Myself &amp; I &gt; you' in content)
+        self._verify_content('Me, Myself &amp; I &gt; you')

     def test_remove_illegal_chars(self):
         assert_equals(self.writer._escape(u'\x1b[31m'), '[31m')
@@ -115,15 +101,36 @@
     def test_ioerror_when_file_is_invalid(self):
         assert_raises(IOError, XmlWriter, os.path.dirname(__file__))

+    def test_custom_encoding(self):
+        self.writer.close()
+        self.writer = XmlWriter(PATH, encoding='ISO-8859-1')
+        self.writer.element('test', u'hyv\xe4')
+        self._verify_content('encoding="ISO-8859-1"')
+        self._verify_node(None, 'test', u'hyv\xe4')
+
     def _verify_node(self, node, name, text=None, attrs={}):
         if node is None:
-            with ETSource(PATH) as source:
-                node = ET.parse(source).getroot()
+            node = self._get_root()
         assert_equals(node.tag, name)
         if text is not None:
             assert_equals(node.text, text)
         assert_equals(node.attrib, attrs)

+    def _verify_content(self, expected):
+        content = self._get_content()
+        assert_true(expected in content,
+ 'Failed to find:\n%s\n\nfrom:\n%s' % (expected, content))
+
+    def _get_root(self):
+        self.writer.close()
+        with ETSource(PATH) as source:
+            return ET.parse(source).getroot()
+
+    def _get_content(self):
+        self.writer.close()
+        with open(PATH) as f:
+            return f.read()
+

 if __name__ == '__main__':
     unittest.main()

==============================================================================
Revision: 78d8f49cb165
Branch:   default
Author:   Pekka Klärck
Date:     Fri Nov  1 10:11:16 2013 UTC
Log:      Automated merge with https://code.google.com/p/robotframework/
http://code.google.com/p/robotframework/source/detail?r=78d8f49cb165


--

--- You received this message because you are subscribed to the Google Groups "robotframework-commit" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to robotframework-commit+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to