123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146 |
- # Copyright (c) IPython Development Team.
- # Distributed under the terms of the Modified BSD License.
- import json
- import io
- import os
- import shutil
- import sys
- import tempfile
- try:
- from unittest import mock
- except ImportError:
- import mock # py2
- from jupyter_core.paths import jupyter_data_dir
- from ipykernel.kernelspec import (
- make_ipkernel_cmd,
- get_kernel_dict,
- write_kernel_spec,
- install,
- InstallIPythonKernelSpecApp,
- KERNEL_NAME,
- RESOURCES,
- )
- import nose.tools as nt
- pjoin = os.path.join
- def test_make_ipkernel_cmd():
- cmd = make_ipkernel_cmd()
- nt.assert_equal(cmd, [
- sys.executable,
- '-m',
- 'ipykernel_launcher',
- '-f',
- '{connection_file}'
- ])
- def assert_kernel_dict(d):
- assert d['argv'] == make_ipkernel_cmd()
- assert d['display_name'] == 'Python %i' % sys.version_info[0]
- assert d['language'] == 'python'
- def test_get_kernel_dict():
- d = get_kernel_dict()
- assert_kernel_dict(d)
- def assert_kernel_dict_with_profile(d):
- nt.assert_equal(d['argv'], make_ipkernel_cmd(
- extra_arguments=["--profile", "test"]))
- assert d['display_name'] == 'Python %i' % sys.version_info[0]
- assert d['language'] == 'python'
- def test_get_kernel_dict_with_profile():
- d = get_kernel_dict(["--profile", "test"])
- assert_kernel_dict_with_profile(d)
- def assert_is_spec(path):
- for fname in os.listdir(RESOURCES):
- dst = pjoin(path, fname)
- assert os.path.exists(dst)
- kernel_json = pjoin(path, 'kernel.json')
- assert os.path.exists(kernel_json)
- with io.open(kernel_json, encoding='utf8') as f:
- json.load(f)
- def test_write_kernel_spec():
- path = write_kernel_spec()
- assert_is_spec(path)
- shutil.rmtree(path)
- def test_write_kernel_spec_path():
- path = os.path.join(tempfile.mkdtemp(), KERNEL_NAME)
- path2 = write_kernel_spec(path)
- assert path == path2
- assert_is_spec(path)
- shutil.rmtree(path)
- def test_install_kernelspec():
- path = tempfile.mkdtemp()
- try:
- test = InstallIPythonKernelSpecApp.launch_instance(argv=['--prefix', path])
- assert_is_spec(os.path.join(
- path, 'share', 'jupyter', 'kernels', KERNEL_NAME))
- finally:
- shutil.rmtree(path)
- def test_install_user():
- tmp = tempfile.mkdtemp()
-
- with mock.patch.dict(os.environ, {'HOME': tmp}):
- install(user=True)
- data_dir = jupyter_data_dir()
-
- assert_is_spec(os.path.join(data_dir, 'kernels', KERNEL_NAME))
- def test_install():
- system_jupyter_dir = tempfile.mkdtemp()
-
- with mock.patch('jupyter_client.kernelspec.SYSTEM_JUPYTER_PATH',
- [system_jupyter_dir]):
- install()
-
- assert_is_spec(os.path.join(system_jupyter_dir, 'kernels', KERNEL_NAME))
- def test_install_profile():
- system_jupyter_dir = tempfile.mkdtemp()
- with mock.patch('jupyter_client.kernelspec.SYSTEM_JUPYTER_PATH',
- [system_jupyter_dir]):
- install(profile="Test")
- spec = os.path.join(system_jupyter_dir, 'kernels', KERNEL_NAME, "kernel.json")
- with open(spec) as f:
- spec = json.load(f)
- assert spec["display_name"].endswith(" [profile=Test]")
- nt.assert_equal(spec["argv"][-2:], ["--profile", "Test"])
- def test_install_display_name_overrides_profile():
- system_jupyter_dir = tempfile.mkdtemp()
- with mock.patch('jupyter_client.kernelspec.SYSTEM_JUPYTER_PATH',
- [system_jupyter_dir]):
- install(display_name="Display", profile="Test")
- spec = os.path.join(system_jupyter_dir, 'kernels', KERNEL_NAME, "kernel.json")
- with open(spec) as f:
- spec = json.load(f)
- assert spec["display_name"] == "Display"
|