Browse Source

tests/util.py: fix compatibility with Python 2

Backporting the Python 3 implementation of setStream
to ClosingFileHandler as a fallback within Python 2.

Reported-by: Jay Satiro

Fixes #6259
Closes #6270
Marc Hoersken 3 years ago
parent
commit
753a2c758a
1 changed files with 15 additions and 0 deletions
  1. 15 0
      tests/util.py

+ 15 - 0
tests/util.py

@@ -46,6 +46,21 @@ class ClosingFileHandler(logging.StreamHandler):
             super(ClosingFileHandler, self).emit(record)
             self.setStream(None)
 
+    def setStream(self, stream):
+        setStream = getattr(super(ClosingFileHandler, self), 'setStream', None)
+        if callable(setStream):
+            return setStream(stream)
+        if stream is self.stream:
+            result = None
+        else:
+            result = self.stream
+            self.acquire()
+            try:
+                self.flush()
+                self.stream = stream
+            finally:
+                self.release()
+        return result
 
 class TestData(object):
     def __init__(self, data_folder):