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))

Reply via email to