##// END OF EJS Templates
Merge pull request #4713 from takluyver/kernel-history-py2...
Min RK -
r13972:01440833 merge
parent child Browse files
Show More
@@ -1,3 +1,4 b''
1 # coding: utf-8
1 2 """test the IPython Kernel"""
2 3
3 4 #-------------------------------------------------------------------------------
@@ -11,6 +12,8 b''
11 12 # Imports
12 13 #-------------------------------------------------------------------------------
13 14
15 import io
16 import os.path
14 17 import sys
15 18
16 19 import nose.tools as nt
@@ -18,8 +21,10 b' import nose.tools as nt'
18 21 from IPython.testing import decorators as dec, tools as tt
19 22 from IPython.utils import py3compat
20 23 from IPython.utils.path import locate_profile
24 from IPython.utils.tempdir import TemporaryDirectory
21 25
22 from .utils import new_kernel, kernel, TIMEOUT, assemble_output, execute, flush_channels
26 from .utils import (new_kernel, kernel, TIMEOUT, assemble_output, execute,
27 flush_channels, wait_for_idle)
23 28
24 29 #-------------------------------------------------------------------------------
25 30 # Tests
@@ -180,6 +185,22 b' def test_eval_input():'
180 185 nt.assert_equal(stdout, "2\n")
181 186
182 187
188 def test_save_history():
189 # Saving history from the kernel with %hist -f was failing because of
190 # unicode problems on Python 2.
191 with kernel() as kc, TemporaryDirectory() as td:
192 file = os.path.join(td, 'hist.out')
193 execute(u'a=1', kc=kc)
194 wait_for_idle(kc)
195 execute(u'b=u"abcþ"', kc=kc)
196 wait_for_idle(kc)
197 _, reply = execute("%hist -f " + file, kc=kc)
198 nt.assert_equal(reply['status'], 'ok')
199 with io.open(file, encoding='utf-8') as f:
200 content = f.read()
201 nt.assert_in(u'a=1', content)
202 nt.assert_in(u'b=u"abcþ"', content)
203
183 204 def test_help_output():
184 205 """ipython kernel --help-all works"""
185 206 tt.help_all_output_test('kernel')
@@ -170,5 +170,10 b' def assemble_output(iopub):'
170 170 pass
171 171 return stdout, stderr
172 172
173
174
173 def wait_for_idle(kc):
174 while True:
175 msg = kc.iopub_channel.get_msg(block=True, timeout=1)
176 msg_type = msg['msg_type']
177 content = msg['content']
178 if msg_type == 'status' and content['execution_state'] == 'idle':
179 break
@@ -341,7 +341,7 b' class Kernel(Configurable):'
341 341
342 342 try:
343 343 content = parent[u'content']
344 code = content[u'code']
344 code = py3compat.cast_unicode_py2(content[u'code'])
345 345 silent = content[u'silent']
346 346 store_history = content.get(u'store_history', not silent)
347 347 except:
@@ -83,6 +83,7 b' if sys.version_info[0] >= 3:'
83 83 str_to_bytes = encode
84 84 bytes_to_str = decode
85 85 cast_bytes_py2 = no_code
86 cast_unicode_py2 = no_code
86 87
87 88 string_types = (str,)
88 89 unicode_type = str
@@ -139,6 +140,7 b' else:'
139 140 str_to_bytes = no_code
140 141 bytes_to_str = no_code
141 142 cast_bytes_py2 = cast_bytes
143 cast_unicode_py2 = cast_unicode
142 144
143 145 string_types = (str, unicode)
144 146 unicode_type = unicode
General Comments 0
You need to be logged in to leave comments. Login now