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

Reply via email to