summaryrefslogtreecommitdiff
path: root/tests/testutils/capture.py
diff options
context:
space:
mode:
authorGuido Günther <agx@sigxcpu.org>2015-03-27 13:15:17 +0100
committerGuido Günther <agx@sigxcpu.org>2015-03-27 13:36:03 +0100
commit4a53ad73eb4468796317bd1e44273a80b3ec9385 (patch)
tree3f51de49bfedb9937951ef37c63e1ef39e8e30ba /tests/testutils/capture.py
parent430be3831596a072f67c4da84a2244da1205e9e6 (diff)
testutils: Add a context manager to capture stderr
and use it to test the help output
Diffstat (limited to 'tests/testutils/capture.py')
-rw-r--r--tests/testutils/capture.py29
1 files changed, 29 insertions, 0 deletions
diff --git a/tests/testutils/capture.py b/tests/testutils/capture.py
new file mode 100644
index 0000000..60d5a12
--- /dev/null
+++ b/tests/testutils/capture.py
@@ -0,0 +1,29 @@
+# vim: set fileencoding=utf-8 :
+
+import sys
+from contextlib import contextmanager
+from StringIO import StringIO
+
+
+class StderrCapture(StringIO):
+ def save(self):
+ self.safed = sys.stderr
+ sys.stderr = self
+
+ def restore(self):
+ if self.safed is not None:
+ sys.stderr = self.safed
+ self.safed = None
+
+ def output(self):
+ self.seek(0)
+ return self.read()
+
+
+@contextmanager
+def capture_stderr():
+ """Capture an output and return it's content"""
+ c = StderrCapture()
+ c.save()
+ yield c
+ c.restore()