@@ -30,6 +30,7 @@ import { EnvironmentActivationService } from '../../../../client/interpreter/act
3030import { IEnvironmentActivationService } from '../../../../client/interpreter/activation/types' ;
3131import { IInterpreterService , InterpreterType , PythonInterpreter } from '../../../../client/interpreter/contracts' ;
3232import { InterpreterService } from '../../../../client/interpreter/interpreterService' ;
33+ import { FakeClock } from '../../../common' ;
3334
3435// tslint:disable-next-line: max-func-body-length
3536suite ( 'Data Science - KernelService' , ( ) => {
@@ -222,6 +223,7 @@ suite('Data Science - KernelService', () => {
222223 // tslint:disable-next-line: max-func-body-length
223224 suite ( 'Registering Interpreters as Kernels' , ( ) => {
224225 let findMatchingKernelSpecStub : sinon . SinonStub < [ PythonInterpreter , IJupyterSessionManager ?, ( CancellationToken | undefined ) ?] , Promise < IJupyterKernelSpec | undefined > > ;
226+ let fakeTimer : FakeClock ;
225227 const interpreter : PythonInterpreter = {
226228 architecture : Architecture . Unknown ,
227229 path : path . join ( 'interpreter' , 'python' ) ,
@@ -246,9 +248,12 @@ suite('Data Science - KernelService', () => {
246248
247249 setup ( ( ) => {
248250 findMatchingKernelSpecStub = sinon . stub ( KernelService . prototype , 'findMatchingKernelSpec' ) ;
251+ fakeTimer = new FakeClock ( ) ;
249252 initialize ( ) ;
250253 } ) ;
251254
255+ teardown ( ( ) => fakeTimer . uninstall ( ) ) ;
256+
252257 test ( 'Fail if interpreter does not have a display name' , async ( ) => {
253258 const invalidInterpreter : PythonInterpreter = {
254259 architecture : Architecture . Unknown ,
@@ -266,32 +271,36 @@ suite('Data Science - KernelService', () => {
266271 when ( execService . execModule ( 'ipykernel' , anything ( ) , anything ( ) ) ) . thenResolve ( { stdout : '' } ) ;
267272 when ( installer . isInstalled ( Product . ipykernel , interpreter ) ) . thenResolve ( true ) ;
268273 findMatchingKernelSpecStub . resolves ( undefined ) ;
274+ fakeTimer . install ( ) ;
269275
270276 const promise = kernelService . registerKernel ( interpreter ) ;
271277
278+ await fakeTimer . wait ( ) ;
272279 await assert . isRejected ( promise ) ;
273280 verify ( execService . execModule ( 'ipykernel' , anything ( ) , anything ( ) ) ) . once ( ) ;
274281 const installArgs = capture ( execService . execModule ) . first ( ) [ 1 ] as string [ ] ;
275282 const kernelName = installArgs [ 3 ] ;
276283 assert . deepEqual ( installArgs , [ 'install' , '--user' , '--name' , kernelName , '--display-name' , interpreter . displayName ] ) ;
277284 await assert . isRejected ( promise , `Kernel not created with the name ${ kernelName } , display_name ${ interpreter . displayName } . Output is ` ) ;
278- } ) . timeout ( 10_000 ) ;
285+ } ) ;
279286 test ( 'If ipykernel is not installed, then prompt to install ipykernel' , async ( ) => {
280287 when ( execService . execModule ( 'ipykernel' , anything ( ) , anything ( ) ) ) . thenResolve ( { stdout : '' } ) ;
281288 when ( installer . isInstalled ( Product . ipykernel , interpreter ) ) . thenResolve ( false ) ;
282289 when ( installer . promptToInstall ( anything ( ) , anything ( ) , anything ( ) ) ) . thenResolve ( InstallerResponse . Installed ) ;
283290 findMatchingKernelSpecStub . resolves ( undefined ) ;
291+ fakeTimer . install ( ) ;
284292
285293 const promise = kernelService . registerKernel ( interpreter ) ;
286294
295+ await fakeTimer . wait ( ) ;
287296 await assert . isRejected ( promise ) ;
288297 verify ( execService . execModule ( 'ipykernel' , anything ( ) , anything ( ) ) ) . once ( ) ;
289298 const installArgs = capture ( execService . execModule ) . first ( ) [ 1 ] as string [ ] ;
290299 const kernelName = installArgs [ 3 ] ;
291300 assert . deepEqual ( installArgs , [ 'install' , '--user' , '--name' , kernelName , '--display-name' , interpreter . displayName ] ) ;
292301 await assert . isRejected ( promise , `Kernel not created with the name ${ kernelName } , display_name ${ interpreter . displayName } . Output is ` ) ;
293302 verify ( installer . promptToInstall ( anything ( ) , anything ( ) , anything ( ) ) ) . once ( ) ;
294- } ) . timeout ( 10_000 ) ;
303+ } ) ;
295304 test ( 'If ipykernel is not installed, and ipykerne installation is canclled, then do not reigster kernel' , async ( ) => {
296305 when ( execService . execModule ( 'ipykernel' , anything ( ) , anything ( ) ) ) . thenResolve ( { stdout : '' } ) ;
297306 when ( installer . isInstalled ( Product . ipykernel , interpreter ) ) . thenResolve ( false ) ;
@@ -303,7 +312,7 @@ suite('Data Science - KernelService', () => {
303312 assert . isUndefined ( kernel ) ;
304313 verify ( execService . execModule ( 'ipykernel' , anything ( ) , anything ( ) ) ) . never ( ) ;
305314 verify ( installer . promptToInstall ( anything ( ) , anything ( ) , anything ( ) ) ) . once ( ) ;
306- } ) . timeout ( 10_000 ) ;
315+ } ) ;
307316 test ( 'Fail if installed kernel is not an instance of JupyterKernelSpec' , async ( ) => {
308317 when ( execService . execModule ( 'ipykernel' , anything ( ) , anything ( ) ) ) . thenResolve ( { stdout : '' } ) ;
309318 when ( installer . isInstalled ( Product . ipykernel , interpreter ) ) . thenResolve ( true ) ;
0 commit comments