Path: blob/main/src/vs/workbench/api/test/browser/TestMainThreadNotebookKernels.ts
4780 views
/*---------------------------------------------------------------------------------------------1* Copyright (c) Microsoft Corporation. All rights reserved.2* Licensed under the MIT License. See License.txt in the project root for license information.3*--------------------------------------------------------------------------------------------*/45import { mock } from '../../../test/common/workbenchTestServices.js';6import { TestInstantiationService } from '../../../../platform/instantiation/test/common/instantiationServiceMock.js';7import { IExtHostContext } from '../../../services/extensions/common/extHostCustomers.js';8import { INotebookKernel, INotebookKernelService } from '../../../contrib/notebook/common/notebookKernelService.js';9import { Disposable } from '../../../../base/common/lifecycle.js';10import { ILanguageService } from '../../../../editor/common/languages/language.js';11import { INotebookCellExecution, INotebookExecution, INotebookExecutionStateService } from '../../../contrib/notebook/common/notebookExecutionStateService.js';12import { INotebookService } from '../../../contrib/notebook/common/notebookService.js';13import { INotebookEditorService } from '../../../contrib/notebook/browser/services/notebookEditorService.js';14import { Event } from '../../../../base/common/event.js';15import { MainThreadNotebookKernels } from '../../browser/mainThreadNotebookKernels.js';16import { ExtensionIdentifier } from '../../../../platform/extensions/common/extensions.js';1718export class TestMainThreadNotebookKernels extends Disposable {19private readonly instantiationService: TestInstantiationService;20private readonly registeredKernels = new Map<string, INotebookKernel>();21private mainThreadNotebookKernels: MainThreadNotebookKernels;22private kernelHandle = 0;2324constructor(extHostContext: IExtHostContext) {25super();26this.instantiationService = this._register(new TestInstantiationService());27this.setupDefaultStubs();28this.mainThreadNotebookKernels = this._register(this.instantiationService.createInstance(MainThreadNotebookKernels, extHostContext));29}3031private setupDefaultStubs(): void {32this.instantiationService.stub(ILanguageService, new class extends mock<ILanguageService>() {33override getRegisteredLanguageIds() {34return ['typescript', 'javascript', 'python'];35}36});3738this.instantiationService.stub(INotebookKernelService, new class extends mock<INotebookKernelService>() {39constructor(private builder: TestMainThreadNotebookKernels) {40super();41}4243override registerKernel(kernel: INotebookKernel) {44this.builder.registeredKernels.set(kernel.id, kernel);45return Disposable.None;46}47override onDidChangeSelectedNotebooks = Event.None;48override getMatchingKernel() {49return {50selected: undefined,51suggestions: [],52all: [],53hidden: []54};55}56}(this));5758this.instantiationService.stub(INotebookExecutionStateService, new class extends mock<INotebookExecutionStateService>() {59override createCellExecution(): INotebookCellExecution {60return new class extends mock<INotebookCellExecution>() { };61}62override createExecution(): INotebookExecution {63return new class extends mock<INotebookExecution>() { };64}65});6667this.instantiationService.stub(INotebookService, new class extends mock<INotebookService>() {68override getNotebookTextModel() {69return undefined;70}71});7273this.instantiationService.stub(INotebookEditorService, new class extends mock<INotebookEditorService>() {74override listNotebookEditors() {75return [];76}77override onDidAddNotebookEditor = Event.None;78override onDidRemoveNotebookEditor = Event.None;79});80}8182get instance(): MainThreadNotebookKernels {83return this.mainThreadNotebookKernels;84}8586async addKernel(id: string): Promise<void> {87const handle = this.kernelHandle++;88await this.instance.$addKernel(handle, {89id,90notebookType: 'test-notebook',91extensionId: new ExtensionIdentifier('test.extension'),92extensionLocation: { scheme: 'test', path: '/test' },93label: 'Test Kernel',94description: 'A test kernel',95hasVariableProvider: true96});97}9899getKernel(id: string): INotebookKernel | undefined {100return this.registeredKernels.get(id);101}102}103104105