##// END OF EJS Templates
ensure kernels are cleaned up in embed_kernel tests
MinRK -
Show More
@@ -17,6 +17,7 b' import sys'
17 17 import tempfile
18 18 import time
19 19
20 from contextlib import contextmanager
20 21 from subprocess import Popen, PIPE
21 22
22 23 import nose.tools as nt
@@ -51,12 +52,13 b' def teardown():'
51 52 pass
52 53
53 54
54 def _launch_kernel(cmd):
55 @contextmanager
56 def setup_kernel(cmd):
55 57 """start an embedded kernel in a subprocess, and wait for it to be ready
56 58
57 59 Returns
58 60 -------
59 kernel, kernel_manager: Popen instance and connected KernelManager
61 kernel_manager: connected KernelManager instance
60 62 """
61 63 kernel = Popen([sys.executable, '-c', cmd], stdout=PIPE, stderr=PIPE, env=env)
62 64 connection_file = os.path.join(IPYTHONDIR,
@@ -81,7 +83,10 b' def _launch_kernel(cmd):'
81 83 km.load_connection_file()
82 84 km.start_channels()
83 85
84 return kernel, km
86 try:
87 yield km
88 finally:
89 km.stop_channels()
85 90
86 91 def test_embed_kernel_basic():
87 92 """IPython.embed_kernel() is basically functional"""
@@ -95,7 +100,7 b' def test_embed_kernel_basic():'
95 100 '',
96 101 ])
97 102
98 kernel, km = _launch_kernel(cmd)
103 with setup_kernel(cmd) as km:
99 104 shell = km.shell_channel
100 105
101 106 # oinfo a (int)
@@ -128,7 +133,7 b' def test_embed_kernel_namespace():'
128 133 '',
129 134 ])
130 135
131 kernel, km = _launch_kernel(cmd)
136 with setup_kernel(cmd) as km:
132 137 shell = km.shell_channel
133 138
134 139 # oinfo a (int)
General Comments 0
You need to be logged in to leave comments. Login now