123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130 |
- // Copyright (c) Jupyter Development Team.
- import 'jest';
- import { JSONExt } from '@lumino/coreutils';
- import { KernelSpecManager, KernelSpec } from '../../src';
- import {
- PYTHON_SPEC,
- KERNELSPECS,
- handleRequest,
- makeSettings
- } from '../utils';
- import { JupyterServer } from '@jupyterlab/testutils';
- class TestManager extends KernelSpecManager {
- intercept: KernelSpec.ISpecModels | null = null;
- protected async requestSpecs(): Promise<void> {
- if (this.intercept) {
- handleRequest(this, 200, this.intercept);
- }
- return super.requestSpecs();
- }
- }
- const PYTHON3_SPEC = JSON.parse(JSON.stringify(PYTHON_SPEC));
- PYTHON3_SPEC.name = 'Python3';
- PYTHON3_SPEC.display_name = 'python3';
- const server = new JupyterServer();
- beforeAll(async () => {
- await server.start();
- });
- afterAll(async () => {
- await server.shutdown();
- });
- describe('kernel/manager', () => {
- let manager: KernelSpecManager;
- beforeEach(() => {
- manager = new KernelSpecManager({ standby: 'never' });
- return manager.ready;
- });
- afterEach(() => {
- manager.dispose();
- });
- describe('KernelSpecManager', () => {
- describe('#constructor()', () => {
- it('should take the options as an argument', () => {
- manager.dispose();
- manager = new KernelSpecManager({
- serverSettings: makeSettings(),
- standby: 'never'
- });
- expect(manager instanceof KernelSpecManager).toBe(true);
- });
- });
- describe('#serverSettings', () => {
- it('should get the server settings', () => {
- manager.dispose();
- const serverSettings = makeSettings();
- const standby = 'never';
- const token = serverSettings.token;
- manager = new KernelSpecManager({ serverSettings, standby });
- expect(manager.serverSettings.token).toBe(token);
- });
- });
- describe('#specs', () => {
- it('should get the kernel specs', async () => {
- await manager.ready;
- expect(manager.specs!.default).toBeTruthy();
- });
- });
- describe('#specsChanged', () => {
- it('should be emitted when the specs change', async () => {
- const manager = new TestManager({ standby: 'never' });
- const specs = JSONExt.deepCopy(KERNELSPECS) as KernelSpec.ISpecModels;
- let called = false;
- manager.specsChanged.connect(() => {
- called = true;
- });
- await manager.ready;
- expect(manager.specs!.default).toBe('echo');
- specs.default = 'shell';
- manager.intercept = specs;
- await manager.refreshSpecs();
- expect(manager.specs!.default).toBe('shell');
- expect(called).toBe(true);
- });
- });
- describe('#isReady', () => {
- it('should test whether the manager is ready', async () => {
- manager.dispose();
- manager = new KernelSpecManager({ standby: 'never' });
- expect(manager.isReady).toBe(false);
- await manager.ready;
- expect(manager.isReady).toBe(true);
- });
- });
- describe('#ready', () => {
- it('should resolve when the manager is ready', () => {
- return manager.ready;
- });
- });
- describe('#refreshSpecs()', () => {
- it('should update list of kernel specs', async () => {
- const manager = new TestManager({ standby: 'never' });
- const specs = JSONExt.deepCopy(KERNELSPECS) as KernelSpec.ISpecModels;
- await manager.ready;
- specs.default = 'shell';
- manager.intercept = specs;
- expect(manager.specs!.default).not.toBe('shell');
- await manager.refreshSpecs();
- expect(manager.specs!.default).toBe('shell');
- });
- });
- });
- });
|