##// END OF EJS Templates
actually send only one kernel_info request...
actually send only one kernel_info request store the Future for the initial request, allowing subsequent requests to wait on the same pending reply. Previously, any incoming requests that arrived while waiting for the first reply would send their own request.

File last commit:

r18470:7ab9aa67
r18563:0b2c2392
Show More
test_kernelspec.py
62 lines | 2.5 KiB | text/x-python | PythonLexer
Thomas Kluyver
Add simple tests for kernel spec machinery
r16478 import json
import os
from os.path import join as pjoin
import unittest
Thomas Kluyver
Add test for installing kernel spec
r16562 from IPython.testing.decorators import onlyif
Thomas Kluyver
Add simple tests for kernel spec machinery
r16478 from IPython.utils.tempdir import TemporaryDirectory
from IPython.kernel import kernelspec
sample_kernel_json = {'argv':['cat', '{connection_file}'],
'display_name':'Test kernel',
}
class KernelSpecTests(unittest.TestCase):
def setUp(self):
Thomas Kluyver
Add test for installing kernel spec
r16562 td = TemporaryDirectory()
self.addCleanup(td.cleanup)
Thomas Kluyver
Add simple tests for kernel spec machinery
r16478 self.sample_kernel_dir = pjoin(td.name, 'kernels', 'Sample')
os.makedirs(self.sample_kernel_dir)
json_file = pjoin(self.sample_kernel_dir, 'kernel.json')
with open(json_file, 'w') as f:
json.dump(sample_kernel_json, f)
self.ksm = kernelspec.KernelSpecManager(ipython_dir=td.name)
Thomas Kluyver
Add test for installing kernel spec
r16562
td2 = TemporaryDirectory()
self.addCleanup(td2.cleanup)
self.installable_kernel = td2.name
with open(pjoin(self.installable_kernel, 'kernel.json'), 'w') as f:
json.dump(sample_kernel_json, f)
Thomas Kluyver
Add simple tests for kernel spec machinery
r16478
def test_find_kernel_specs(self):
kernels = self.ksm.find_kernel_specs()
self.assertEqual(kernels['sample'], self.sample_kernel_dir)
def test_get_kernel_spec(self):
ks = self.ksm.get_kernel_spec('SAMPLE') # Case insensitive
self.assertEqual(ks.resource_dir, self.sample_kernel_dir)
self.assertEqual(ks.argv, sample_kernel_json['argv'])
self.assertEqual(ks.display_name, sample_kernel_json['display_name'])
Thomas Kluyver
Add test for installing kernel spec
r16562 self.assertEqual(ks.env, {})
def test_install_kernel_spec(self):
self.ksm.install_kernel_spec(self.installable_kernel,
kernel_name='tstinstalled')
self.assertIn('tstinstalled', self.ksm.find_kernel_specs())
with self.assertRaises(OSError):
self.ksm.install_kernel_spec(self.installable_kernel,
kernel_name='tstinstalled')
# Smoketest that this succeeds
self.ksm.install_kernel_spec(self.installable_kernel,
kernel_name='tstinstalled',
replace=True)
Thomas Kluyver
Fix kernelspec test skip condition...
r17451 @onlyif(os.name != 'nt' and not os.access('/usr/local/share', os.W_OK), "needs Unix system without root privileges")
Thomas Kluyver
Add test for installing kernel spec
r16562 def test_cant_install_kernel_spec(self):
with self.assertRaises(OSError):
self.ksm.install_kernel_spec(self.installable_kernel,
kernel_name='tstinstalled',
system=True)