@@ -16,6 +16,7 @@ import { JupyterSessionManager } from '../../../../client/datascience/jupyter/ju
1616import { KernelSelectionProvider } from '../../../../client/datascience/jupyter/kernels/kernelSelections' ;
1717import { KernelService } from '../../../../client/datascience/jupyter/kernels/kernelService' ;
1818import { IKernelSpecQuickPickItem } from '../../../../client/datascience/jupyter/kernels/types' ;
19+ import { IKernelFinder } from '../../../../client/datascience/kernel-launcher/types' ;
1920import { IJupyterKernel , IJupyterKernelSpec , IJupyterSessionManager } from '../../../../client/datascience/types' ;
2021import { InterpreterSelector } from '../../../../client/interpreter/configuration/interpreterSelector/interpreterSelector' ;
2122import { IInterpreterQuickPickItem , IInterpreterSelector } from '../../../../client/interpreter/configuration/types' ;
@@ -25,6 +26,7 @@ import { InterpreterType } from '../../../../client/interpreter/contracts';
2526suite ( 'Data Science - KernelSelections' , ( ) => {
2627 let kernelSelectionProvider : KernelSelectionProvider ;
2728 let kernelService : KernelService ;
29+ let kernelFinder : IKernelFinder ;
2830 let interpreterSelector : IInterpreterSelector ;
2931 let pathUtils : IPathUtils ;
3032 let fs : IFileSystem ;
@@ -132,6 +134,7 @@ suite('Data Science - KernelSelections', () => {
132134 interpreterSelector = mock ( InterpreterSelector ) ;
133135 sessionManager = mock ( JupyterSessionManager ) ;
134136 kernelService = mock ( KernelService ) ;
137+ kernelFinder = mock < IKernelFinder > ( ) ;
135138 fs = mock ( FileSystem ) ;
136139 pathUtils = mock ( PathUtils ) ;
137140 when ( pathUtils . getDisplayName ( anything ( ) ) ) . thenReturn ( '<user friendly path>' ) ;
@@ -140,7 +143,8 @@ suite('Data Science - KernelSelections', () => {
140143 instance ( kernelService ) ,
141144 instance ( interpreterSelector ) ,
142145 instance ( fs ) ,
143- instance ( pathUtils )
146+ instance ( pathUtils ) ,
147+ instance ( kernelFinder )
144148 ) ;
145149 } ) ;
146150
@@ -216,7 +220,44 @@ suite('Data Science - KernelSelections', () => {
216220 verify ( sessionManager . getKernelSpecs ( ) ) . once ( ) ;
217221 assert . deepEqual ( items , expectedItems ) ;
218222 } ) ;
219- test ( 'Should return a list of Local Kernels + Interpreters for local connection (excluding non-python kernels)' , async ( ) => {
223+ test ( 'Should return a list of Local Kernels + Interpreters for local raw connection (excluding non-python kernels)' , async ( ) => {
224+ when ( kernelFinder . listKernelSpecs ( anything ( ) ) ) . thenResolve ( allSpecs ) ;
225+ when ( interpreterSelector . getSuggestions ( undefined ) ) . thenResolve ( allInterpreters ) ;
226+
227+ // Quick pick must contain
228+ // - kernel spec display name
229+ // - selection = kernel model + kernel spec
230+ // - description = last activity and # of connections.
231+ const expectedKernelItems : IKernelSpecQuickPickItem [ ] = [ python1KernelSpecModel , python3KernelSpecModel ] . map (
232+ ( item ) => {
233+ return {
234+ label : item . display_name ,
235+ detail : '<user friendly path>' ,
236+ selection : { interpreter : undefined , kernelModel : undefined , kernelSpec : item }
237+ } ;
238+ }
239+ ) ;
240+ const expectedInterpreterItems : IKernelSpecQuickPickItem [ ] = allInterpreters . map ( ( item ) => {
241+ return {
242+ ...item ,
243+ label : item . label ,
244+ detail : '<user friendly path>' ,
245+ description : '' ,
246+ selection : { kernelModel : undefined , interpreter : item . interpreter , kernelSpec : undefined }
247+ } ;
248+ } ) ;
249+ const expectedList = [ ...expectedKernelItems , ...expectedInterpreterItems ] ;
250+ expectedList . sort ( ( a , b ) => ( a . label === b . label ? 0 : a . label > b . label ? 1 : - 1 ) ) ;
251+
252+ const items = await kernelSelectionProvider . getKernelSelectionsForLocalSession (
253+ undefined ,
254+ 'raw' ,
255+ instance ( sessionManager )
256+ ) ;
257+
258+ assert . deepEqual ( items , expectedList ) ;
259+ } ) ;
260+ test ( 'Should return a list of Local Kernels + Interpreters for local jupyter connection (excluding non-python kernels)' , async ( ) => {
220261 when ( sessionManager . getKernelSpecs ( ) ) . thenResolve ( allSpecs ) ;
221262 when ( kernelService . getKernelSpecs ( anything ( ) , anything ( ) ) ) . thenResolve ( allSpecs ) ;
222263 when ( interpreterSelector . getSuggestions ( undefined ) ) . thenResolve ( allInterpreters ) ;
@@ -248,6 +289,7 @@ suite('Data Science - KernelSelections', () => {
248289
249290 const items = await kernelSelectionProvider . getKernelSelectionsForLocalSession (
250291 undefined ,
292+ 'jupyter' ,
251293 instance ( sessionManager )
252294 ) ;
253295
0 commit comments