Revision: 3030
Author: pekka.klarck
Date: Fri Apr 16 07:46:13 2010
Log: Fix printing non-ASCII log messages from Java libraries by explicitly setting encodinng to UTF-8 (issue 534). Earlier implementation used system's default encoding which in pracice meant that e.g. on Finnish Windows åäö worked fine but more exotic (for us) characters didn't. After this all Jython tests finally pass also on Windows!!!!!!!!!!!!!!!
http://code.google.com/p/robotframework/source/detail?r=3030

Modified:
 /trunk/src/robot/utils/outputcapture.py

=======================================
--- /trunk/src/robot/utils/outputcapture.py     Mon Mar  1 03:57:59 2010
+++ /trunk/src/robot/utils/outputcapture.py     Fri Apr 16 07:46:13 2010
@@ -91,7 +91,9 @@
             return ByteArrayOutputStream()

         def _get_msg(self, key):
-            return self._outs[key].toString()
+            output = self._outs[key]
+            output.flush()
+            return output.toString('UTF-8')


 class _OutputCapture:
@@ -115,8 +117,8 @@
             self._orig_java_err = System.err
             self._capt_java_out = _JavaOutput()
             self._capt_java_err = _JavaOutput()
-            System.setOut(PrintStream(self._capt_java_out))
-            System.setErr(PrintStream(self._capt_java_err))
+            System.setOut(PrintStream(self._capt_java_out, False, 'UTF-8'))
+            System.setErr(PrintStream(self._capt_java_err, False, 'UTF-8'))

     def release_output(self):
         self._sema.acquire()
@@ -131,7 +133,7 @@
         if os.name == 'java':
             out = self._capt_java_out.get_value()
             err = self._capt_java_err.get_value()
-            if (out, err) !=  ('', ''):
+            if out or err:
                 return out, err
         return sys.stdout.get_value(), sys.stderr.get_value()



--
Subscription settings: 
http://groups.google.com/group/robotframework-commit/subscribe?hl=en

Reply via email to