Revision: 3655
Author: pekka.klarck
Date: Fri May 28 17:14:10 2010
Log: make sure streams are closed/reset
http://code.google.com/p/robotframework/source/detail?r=3655
Modified:
/trunk/src/robot/running/outputcapture.py
=======================================
--- /trunk/src/robot/running/outputcapture.py Fri May 28 16:18:21 2010
+++ /trunk/src/robot/running/outputcapture.py Fri May 28 17:14:10 2010
@@ -37,14 +37,17 @@
sys.stdout = StringIO()
def release(self):
- sys.stdout.flush()
- sys.stderr.flush()
- out = sys.stdout.getvalue()
- err = sys.stderr.getvalue()
+ out = self._get_value(sys.stdout)
+ err = self._get_value(sys.stderr)
sys.stdout = self._orig_out
sys.stderr = self._orig_err
return out, err
+ def _get_value(self, stream):
+ stream.flush()
+ value = stream.getvalue()
+ stream.close()
+ return value
if not sys.platform.startswith('java'):
class _JavaOutput(object):
@@ -70,4 +73,9 @@
System.err.close()
System.setOut(self._orig_out)
System.setErr(self._orig_err)
- return self._out.toString('UTF-8'), self._err.toString('UTF-8')
+ return self._get_value(self._out), self._get_value(self._err)
+
+ def _get_value(self, stream):
+ value = stream.toString('UTF-8')
+ stream.reset()
+ return value