##// END OF EJS Templates
move capture_output util from parallel tests to utils.io
MinRK -
Show More
@@ -100,36 +100,6 b' def skip_without(*names):'
100 # Classes
100 # Classes
101 #-------------------------------------------------------------------------------
101 #-------------------------------------------------------------------------------
102
102
103 class CapturedIO(object):
104 """Simple object for containing captured stdout/err StringIO objects"""
105
106 def __init__(self, stdout, stderr):
107 self.stdout_io = stdout
108 self.stderr_io = stderr
109
110 @property
111 def stdout(self):
112 return self.stdout_io.getvalue()
113
114 @property
115 def stderr(self):
116 return self.stderr_io.getvalue()
117
118
119 class capture_output(object):
120 """context manager for capturing stdout/err"""
121
122 def __enter__(self):
123 self.sys_stdout = sys.stdout
124 self.sys_stderr = sys.stderr
125 stdout = sys.stdout = StringIO()
126 stderr = sys.stderr = StringIO()
127 return CapturedIO(stdout, stderr)
128
129 def __exit__(self, exc_type, exc_value, traceback):
130 sys.stdout = self.sys_stdout
131 sys.stderr = self.sys_stderr
132
133
103
134 class ClusterTestCase(BaseZMQTestCase):
104 class ClusterTestCase(BaseZMQTestCase):
135
105
@@ -18,11 +18,12 b' Authors:'
18
18
19 import time
19 import time
20
20
21 from IPython.parallel.error import TimeoutError
21 from IPython.utils.io import capture_output
22
22
23 from IPython.parallel.error import TimeoutError
23 from IPython.parallel import error, Client
24 from IPython.parallel import error, Client
24 from IPython.parallel.tests import add_engines
25 from IPython.parallel.tests import add_engines
25 from .clienttest import ClusterTestCase, capture_output
26 from .clienttest import ClusterTestCase
26
27
27 def setup():
28 def setup():
28 add_engines(2, total=True)
29 add_engines(2, total=True)
@@ -25,6 +25,7 b' from nose import SkipTest'
25
25
26 from IPython.testing import decorators as dec
26 from IPython.testing import decorators as dec
27 from IPython.testing.ipunittest import ParametricTestCase
27 from IPython.testing.ipunittest import ParametricTestCase
28 from IPython.utils.io import capture_output
28
29
29 from IPython import parallel as pmod
30 from IPython import parallel as pmod
30 from IPython.parallel import error
31 from IPython.parallel import error
@@ -33,7 +34,7 b' from IPython.parallel.util import interactive'
33
34
34 from IPython.parallel.tests import add_engines
35 from IPython.parallel.tests import add_engines
35
36
36 from .clienttest import ClusterTestCase, capture_output, generate_output
37 from .clienttest import ClusterTestCase, generate_output
37
38
38 def setup():
39 def setup():
39 add_engines(3, total=True)
40 add_engines(3, total=True)
@@ -17,6 +17,7 b' from __future__ import print_function'
17 import os
17 import os
18 import sys
18 import sys
19 import tempfile
19 import tempfile
20 from StringIO import StringIO
20
21
21 #-----------------------------------------------------------------------------
22 #-----------------------------------------------------------------------------
22 # Code
23 # Code
@@ -321,3 +322,36 b' def raw_print_err(*args, **kw):'
321 # Short aliases for quick debugging, do NOT use these in production code.
322 # Short aliases for quick debugging, do NOT use these in production code.
322 rprint = raw_print
323 rprint = raw_print
323 rprinte = raw_print_err
324 rprinte = raw_print_err
325
326
327 class CapturedIO(object):
328 """Simple object for containing captured stdout/err StringIO objects"""
329
330 def __init__(self, stdout, stderr):
331 self.stdout_io = stdout
332 self.stderr_io = stderr
333
334 @property
335 def stdout(self):
336 return self.stdout_io.getvalue()
337
338 @property
339 def stderr(self):
340 return self.stderr_io.getvalue()
341
342
343 class capture_output(object):
344 """context manager for capturing stdout/err"""
345
346 def __enter__(self):
347 self.sys_stdout = sys.stdout
348 self.sys_stderr = sys.stderr
349 stdout = sys.stdout = StringIO()
350 stderr = sys.stderr = StringIO()
351 return CapturedIO(stdout, stderr)
352
353 def __exit__(self, exc_type, exc_value, traceback):
354 sys.stdout = self.sys_stdout
355 sys.stderr = self.sys_stderr
356
357
@@ -20,7 +20,7 b' from subprocess import Popen, PIPE'
20 import nose.tools as nt
20 import nose.tools as nt
21
21
22 from IPython.testing import decorators as dec
22 from IPython.testing import decorators as dec
23 from IPython.utils.io import Tee
23 from IPython.utils.io import Tee, capture_output
24 from IPython.utils.py3compat import doctest_refactor_print
24 from IPython.utils.py3compat import doctest_refactor_print
25
25
26 #-----------------------------------------------------------------------------
26 #-----------------------------------------------------------------------------
@@ -73,3 +73,13 b' def test_io_init():'
73 # __class__ is a reference to the class object in Python 3, so we can't
73 # __class__ is a reference to the class object in Python 3, so we can't
74 # just test for string equality.
74 # just test for string equality.
75 assert 'IPython.utils.io.IOStream' in classname, classname
75 assert 'IPython.utils.io.IOStream' in classname, classname
76
77 def test_capture_output():
78 """capture_output() context works"""
79
80 with capture_output() as io:
81 print 'hi, stdout'
82 print >> sys.stderr, 'hi, stderr'
83
84 nt.assert_equals(io.stdout, 'hi, stdout\n')
85 nt.assert_equals(io.stderr, 'hi, stderr\n')
General Comments 0
You need to be logged in to leave comments. Login now