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