##// END OF EJS Templates
Add test for installing kernel spec
Thomas Kluyver -
Show More
@@ -3,6 +3,7 b' import os'
3 from os.path import join as pjoin
3 from os.path import join as pjoin
4 import unittest
4 import unittest
5
5
6 from IPython.testing.decorators import onlyif
6 from IPython.utils.tempdir import TemporaryDirectory
7 from IPython.utils.tempdir import TemporaryDirectory
7 from IPython.kernel import kernelspec
8 from IPython.kernel import kernelspec
8
9
@@ -13,7 +14,8 b" sample_kernel_json = {'argv':['cat', '{connection_file}'],"
13
14
14 class KernelSpecTests(unittest.TestCase):
15 class KernelSpecTests(unittest.TestCase):
15 def setUp(self):
16 def setUp(self):
16 self.tempdir = td = TemporaryDirectory()
17 td = TemporaryDirectory()
18 self.addCleanup(td.cleanup)
17 self.sample_kernel_dir = pjoin(td.name, 'kernels', 'Sample')
19 self.sample_kernel_dir = pjoin(td.name, 'kernels', 'Sample')
18 os.makedirs(self.sample_kernel_dir)
20 os.makedirs(self.sample_kernel_dir)
19 json_file = pjoin(self.sample_kernel_dir, 'kernel.json')
21 json_file = pjoin(self.sample_kernel_dir, 'kernel.json')
@@ -21,9 +23,12 b' class KernelSpecTests(unittest.TestCase):'
21 json.dump(sample_kernel_json, f)
23 json.dump(sample_kernel_json, f)
22
24
23 self.ksm = kernelspec.KernelSpecManager(ipython_dir=td.name)
25 self.ksm = kernelspec.KernelSpecManager(ipython_dir=td.name)
24
26
25 def tearDown(self):
27 td2 = TemporaryDirectory()
26 self.tempdir.cleanup()
28 self.addCleanup(td2.cleanup)
29 self.installable_kernel = td2.name
30 with open(pjoin(self.installable_kernel, 'kernel.json'), 'w') as f:
31 json.dump(sample_kernel_json, f)
27
32
28 def test_find_kernel_specs(self):
33 def test_find_kernel_specs(self):
29 kernels = self.ksm.find_kernel_specs()
34 kernels = self.ksm.find_kernel_specs()
@@ -36,4 +41,25 b' class KernelSpecTests(unittest.TestCase):'
36 self.assertEqual(ks.display_name, sample_kernel_json['display_name'])
41 self.assertEqual(ks.display_name, sample_kernel_json['display_name'])
37 self.assertEqual(ks.language, sample_kernel_json['language'])
42 self.assertEqual(ks.language, sample_kernel_json['language'])
38 self.assertEqual(ks.codemirror_mode, sample_kernel_json['language'])
43 self.assertEqual(ks.codemirror_mode, sample_kernel_json['language'])
39 self.assertEqual(ks.env, {}) No newline at end of file
44 self.assertEqual(ks.env, {})
45
46 def test_install_kernel_spec(self):
47 self.ksm.install_kernel_spec(self.installable_kernel,
48 kernel_name='tstinstalled')
49 self.assertIn('tstinstalled', self.ksm.find_kernel_specs())
50
51 with self.assertRaises(OSError):
52 self.ksm.install_kernel_spec(self.installable_kernel,
53 kernel_name='tstinstalled')
54
55 # Smoketest that this succeeds
56 self.ksm.install_kernel_spec(self.installable_kernel,
57 kernel_name='tstinstalled',
58 replace=True)
59
60 @onlyif(os.name != 'nt' and os.getuid() != 0, "needs Unix system and non-root uid")
61 def test_cant_install_kernel_spec(self):
62 with self.assertRaises(OSError):
63 self.ksm.install_kernel_spec(self.installable_kernel,
64 kernel_name='tstinstalled',
65 system=True)
General Comments 0
You need to be logged in to leave comments. Login now