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 & I > you' in content)
+ self._verify_content('Me, Myself & I > 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.