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