33
44import { assert } from 'chai' ;
55import { mock } from 'ts-mockito' ;
6+ import { CancellationTokenSource } from 'vscode' ;
67import { ExperimentService } from '../../client/common/experiments/service' ;
78import { IExperimentService } from '../../client/common/types' ;
89import { TensorBoardNbextensionCodeLensProvider } from '../../client/tensorBoard/nbextensionCodeLensProvider' ;
@@ -11,32 +12,43 @@ import { MockDocument } from '../startPage/mockDocument';
1112suite ( 'TensorBoard nbextension code lens provider' , ( ) => {
1213 let experimentService : IExperimentService ;
1314 let codeLensProvider : TensorBoardNbextensionCodeLensProvider ;
15+ let cancelTokenSource : CancellationTokenSource ;
1416
1517 setup ( ( ) => {
1618 experimentService = mock ( ExperimentService ) ;
1719 codeLensProvider = new TensorBoardNbextensionCodeLensProvider ( experimentService , [ ] ) ;
20+ cancelTokenSource = new CancellationTokenSource ( ) ;
21+ } ) ;
22+ teardown ( ( ) => {
23+ cancelTokenSource . dispose ( ) ;
1824 } ) ;
1925
2026 test ( 'Provide code lens for Python notebook loading tensorboard nbextension' , async ( ) => {
2127 const document = new MockDocument ( 'a=1\n%load_ext tensorboard' , 'foo.ipynb' , async ( ) => true ) ;
22- const codeActions = codeLensProvider . provideCodeLenses ( document ) ;
23- assert . ok ( codeActions . length > 0 , 'Failed to provide code lens for file loading tensorboard nbextension' ) ;
28+ const codeLens = codeLensProvider . provideCodeLenses ( document , cancelTokenSource . token ) ;
29+ assert . ok ( codeLens . length > 0 , 'Failed to provide code lens for file loading tensorboard nbextension' ) ;
2430 } ) ;
2531 test ( 'Provide code lens for Python notebook launching tensorboard nbextension' , async ( ) => {
2632 const document = new MockDocument ( 'a=1\n%tensorboard --logdir logs/fit' , 'foo.ipynb' , async ( ) => true ) ;
27- const codeActions = codeLensProvider . provideCodeLenses ( document ) ;
28- assert . ok ( codeActions . length > 0 , 'Failed to provide code lens for file loading tensorboard nbextension' ) ;
33+ const codeLens = codeLensProvider . provideCodeLenses ( document , cancelTokenSource . token ) ;
34+ assert . ok ( codeLens . length > 0 , 'Failed to provide code lens for file loading tensorboard nbextension' ) ;
35+ } ) ;
36+ test ( 'Fails when cancellation is signaled' , ( ) => {
37+ const document = new MockDocument ( 'a=1\n%tensorboard --logdir logs/fit' , 'foo.ipynb' , async ( ) => true ) ;
38+ cancelTokenSource . cancel ( ) ;
39+ const codeLens = codeLensProvider . provideCodeLenses ( document , cancelTokenSource . token ) ;
40+ assert . ok ( codeLens . length === 0 , 'Provided codelens even after cancellation was requested' ) ;
2941 } ) ;
3042 // Can't verify these cases without running in vscode as we depend on vscode to not call us
3143 // based on the DocumentSelector we provided. See nbExtensionCodeLensProvider.test.ts for that.
3244 // test('Does not provide code lens for Python file loading tensorboard nbextension', async () => {
3345 // const document = new MockDocument('a=1\n%load_ext tensorboard', 'foo.py', async () => true);
34- // const codeActions = codeLensProvider.provideCodeLenses(document);
35- // assert.ok(codeActions .length === 0, 'Provided code lens for Python file loading tensorboard nbextension');
46+ // const codeLens = codeLensProvider.provideCodeLenses(document);
47+ // assert.ok(codeLens .length === 0, 'Provided code lens for Python file loading tensorboard nbextension');
3648 // });
3749 // test('Does not provide code lens for Python file launching tensorboard nbextension', async () => {
3850 // const document = new MockDocument('a=1\n%tensorboard --logdir logs/fit', 'foo.py', async () => true);
39- // const codeActions = codeLensProvider.provideCodeLenses(document);
40- // assert.ok(codeActions .length === 0, 'Provided code lens for Python file loading tensorboard nbextension');
51+ // const codeLens = codeLensProvider.provideCodeLenses(document);
52+ // assert.ok(codeLens .length === 0, 'Provided code lens for Python file loading tensorboard nbextension');
4153 // });
4254} ) ;
0 commit comments