2 new revisions:
Revision: 3fe8c359e038
Author: Janne Härkönen <[email protected]>
Date: Tue Nov 29 05:33:18 2011
Log: hardcode pathname to avoid .pyc and $py.class files
http://code.google.com/p/robotframework/source/detail?r=3fe8c359e038
Revision: 2fd6fff34a81
Author: Janne Härkönen <[email protected]>
Date: Tue Nov 29 05:33:36 2011
Log: xmlwriters: do stream implementations in tests
http://code.google.com/p/robotframework/source/detail?r=2fd6fff34a81
==============================================================================
Revision: 3fe8c359e038
Author: Janne Härkönen <[email protected]>
Date: Tue Nov 29 05:33:18 2011
Log: hardcode pathname to avoid .pyc and $py.class files
http://code.google.com/p/robotframework/source/detail?r=3fe8c359e038
Modified:
/utest/utils/test_xmlsource.py
=======================================
--- /utest/utils/test_xmlsource.py Mon Nov 28 03:12:40 2011
+++ /utest/utils/test_xmlsource.py Tue Nov 29 05:33:18 2011
@@ -23,7 +23,7 @@
self._verify_string_representation(source, '<in-memory file>')
def test_opened_file_object_can_be_used(self):
- fname = os.path.splitext(__file__)[0] + '.py'
+ fname =
os.path.join(os.path.dirname(__file__), 'test_xmlsource.py')
source = XmlSource(open(fname))
with source as src:
assert_true(src.read().startswith('from __future__'))
==============================================================================
Revision: 2fd6fff34a81
Author: Janne Härkönen <[email protected]>
Date: Tue Nov 29 05:33:36 2011
Log: xmlwriters: do stream implementations in tests
http://code.google.com/p/robotframework/source/detail?r=2fd6fff34a81
Modified:
/src/robot/utils/jyxmlwriter.py
/src/robot/utils/pyxmlwriter.py
/utest/result/test_resultserializer.py
=======================================
--- /src/robot/utils/jyxmlwriter.py Thu Oct 27 04:20:39 2011
+++ /src/robot/utils/jyxmlwriter.py Tue Nov 29 05:33:36 2011
@@ -12,20 +12,19 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-from java.io import FileOutputStream, Writer
+from java.io import FileOutputStream
from javax.xml.transform.sax import SAXTransformerFactory
from javax.xml.transform.stream import StreamResult
from org.xml.sax.helpers import AttributesImpl
-from array import array
from abstractxmlwriter import AbstractXmlWriter
class XmlWriter(AbstractXmlWriter):
- def __init__(self, output):
- self.path = output
- self._output = self._create_output(output)
+ def __init__(self, path):
+ self.path = path
+ self._output = self._create_output(path)
self._writer =
SAXTransformerFactory.newInstance().newTransformerHandler()
self._writer.setResult(StreamResult(self._output))
self._writer.startDocument()
@@ -33,9 +32,7 @@
self.closed = False
def _create_output(self, output):
- if isinstance(output, basestring):
- return FileOutputStream(output)
- return OutputWriter(output)
+ return FileOutputStream(output)
def _start(self, name, attrs):
self._writer.startElement('', '', name,
self._get_attrs_impl(attrs))
@@ -51,25 +48,3 @@
def _end(self, name):
self._writer.endElement('', '', name)
-
-
-class OutputWriter(Writer):
-
- def __init__(self, output):
- self._output = output
-
- def close(self): # abstract method of java.io.Writer
- pass
-
- def flush(self): # abstract method of java.io.Writer
- pass
-
- def write(self, *args):
- # There are 5 overloaded version of #write() in java.io.Writer,
- # the three that TransformHandler uses are handled below.
- value = args[0]
- if isinstance(value, array):
- value = args[0].tostring()
- if isinstance(value, int):
- value = chr(value)
- self._output.write(value)
=======================================
--- /src/robot/utils/pyxmlwriter.py Sat Nov 5 02:52:04 2011
+++ /src/robot/utils/pyxmlwriter.py Tue Nov 29 05:33:36 2011
@@ -29,9 +29,7 @@
self.closed = False
def _create_output(self, output):
- if isinstance(output, basestring):
- return open(output, 'wb')
- return output
+ return open(output, 'wb')
def _start(self, name, attrs):
self._writer.startElement(name, AttributesImpl(attrs))
=======================================
--- /utest/result/test_resultserializer.py Wed Nov 16 12:04:48 2011
+++ /utest/result/test_resultserializer.py Tue Nov 29 05:33:36 2011
@@ -1,20 +1,72 @@
import unittest
+import os
from StringIO import StringIO
from xml.etree.ElementTree import XML
from xml.etree.ElementTree import tostring
from robot.result.builders import ResultFromXML
from robot.result.serializer import RebotXMLWriter
+from robot.utils.pyxmlwriter import XmlWriter
from robot.utils.asserts import assert_equals
from test_resultbuilder import GOLDEN_XML, GOLDEN_XML_TWICE
+class StreamXmlWriter(XmlWriter):
+
+ def _create_output(self, output):
+ return output
+
+if os.name == 'java':
+ from java.io import Writer
+ from array import array
+ from robot.utils.jyxmlwriter import XmlWriter
+
+ class StreamXmlWriter(XmlWriter):
+
+ def _create_output(self, output):
+ return StreamOutputWriter(output)
+
+ class StreamOutputWriter(Writer):
+
+ def __init__(self, output):
+ self._output = output
+
+ def close(self):
+ pass
+
+ def flush(self):
+ pass
+
+ def write(self, value, offset=None, length=None):
+ # There are 5 overloaded version of #write() in java.io.Writer,
+ # the three that TransformHandler uses are handled below.
+ self._output.write(self._content(value, offset, length))
+
+ def _content(self, value, offset, length):
+ if isinstance(value, array):
+ return value[offset:offset+length].tostring()
+ if isinstance(value, int):
+ return unichr(value)
+ return value
+
+
+class TestableRebotXmlWriter(RebotXMLWriter):
+
+ def _get_writer(self, output, generator):
+ writer = StreamXmlWriter(output)
+ writer.start('robot')
+ return writer
+
+
class TestResultSerializer(unittest.TestCase):
+ def _create_writer(self, output):
+ return TestableRebotXmlWriter(output)
+
def test_single_result_serialization(self):
output = StringIO()
- ResultFromXML(StringIO(GOLDEN_XML)).visit(RebotXMLWriter(output))
+
ResultFromXML(StringIO(GOLDEN_XML)).visit(self._create_writer(output))
self._assert_xml_content(self._xml_lines(output.getvalue()),
self._xml_lines(GOLDEN_XML))
@@ -29,7 +81,7 @@
def test_combining_results(self):
output = StringIO()
result = ResultFromXML(StringIO(GOLDEN_XML), StringIO(GOLDEN_XML))
- result.visit(RebotXMLWriter(output))
+ result.visit(self._create_writer(output))
self._assert_xml_content(self._xml_lines(output.getvalue()),
self._xml_lines(GOLDEN_XML_TWICE))