|
| 1 | +import * as sinon from 'sinon'; |
| 2 | +import { TensorBoardImportTracker } from '../../client/tensorBoard/tensorBoardImportTracker'; |
| 3 | +import { MockDocumentManager } from '../startPage/mockDocumentManager'; |
| 4 | + |
| 5 | +suite('TensorBoard import tracker', () => { |
| 6 | + let documentManager: MockDocumentManager; |
| 7 | + let tensorBoardImportTracker: TensorBoardImportTracker; |
| 8 | + let onDidImportTensorBoardListener: sinon.SinonExpectation; |
| 9 | + |
| 10 | + setup(() => { |
| 11 | + documentManager = new MockDocumentManager(); |
| 12 | + tensorBoardImportTracker = new TensorBoardImportTracker(documentManager, []); |
| 13 | + onDidImportTensorBoardListener = sinon.expectation.create('onDidImportTensorBoardListener'); |
| 14 | + tensorBoardImportTracker.onDidImportTensorBoard(onDidImportTensorBoardListener); |
| 15 | + }); |
| 16 | + |
| 17 | + test('Simple tensorboard import in Python file', async () => { |
| 18 | + const document = documentManager.addDocument('import tensorboard', 'foo.py'); |
| 19 | + await documentManager.showTextDocument(document); |
| 20 | + await tensorBoardImportTracker.activate(); |
| 21 | + onDidImportTensorBoardListener.once().verify(); |
| 22 | + }); |
| 23 | + test('Simple tensorboard import in Python ipynb', async () => { |
| 24 | + const document = documentManager.addDocument('import tensorboard', 'foo.ipynb'); |
| 25 | + await documentManager.showTextDocument(document); |
| 26 | + await tensorBoardImportTracker.activate(); |
| 27 | + onDidImportTensorBoardListener.once().verify(); |
| 28 | + }); |
| 29 | + test('`from x.y.tensorboard import z` import', async () => { |
| 30 | + const document = documentManager.addDocument('from torch.utils.tensorboard import SummaryWriter', 'foo.py'); |
| 31 | + await documentManager.showTextDocument(document); |
| 32 | + await tensorBoardImportTracker.activate(); |
| 33 | + onDidImportTensorBoardListener.once().verify(); |
| 34 | + }); |
| 35 | + test('`from x.y import tensorboard` import', async () => { |
| 36 | + const document = documentManager.addDocument('from torch.utils import tensorboard', 'foo.py'); |
| 37 | + await documentManager.showTextDocument(document); |
| 38 | + await tensorBoardImportTracker.activate(); |
| 39 | + onDidImportTensorBoardListener.once().verify(); |
| 40 | + }); |
| 41 | + test('`import x, y` import', async () => { |
| 42 | + const document = documentManager.addDocument('import tensorboard, tensorflow', 'foo.py'); |
| 43 | + await documentManager.showTextDocument(document); |
| 44 | + await tensorBoardImportTracker.activate(); |
| 45 | + onDidImportTensorBoardListener.once().verify(); |
| 46 | + }); |
| 47 | + test('`import pkg as _` import', async () => { |
| 48 | + const document = documentManager.addDocument('import tensorboard as tb', 'foo.py'); |
| 49 | + await documentManager.showTextDocument(document); |
| 50 | + await tensorBoardImportTracker.activate(); |
| 51 | + onDidImportTensorBoardListener.once().verify(); |
| 52 | + }); |
| 53 | + test('Fire on changed text editor', async () => { |
| 54 | + await tensorBoardImportTracker.activate(); |
| 55 | + const document = documentManager.addDocument('import tensorboard as tb', 'foo.py'); |
| 56 | + await documentManager.showTextDocument(document); |
| 57 | + onDidImportTensorBoardListener.once().verify(); |
| 58 | + }); |
| 59 | + test('Do not fire event if no tensorboard import', async () => { |
| 60 | + const document = documentManager.addDocument('import tensorflow as tf\nfrom torch.utils import foo', 'foo.py'); |
| 61 | + await documentManager.showTextDocument(document); |
| 62 | + await tensorBoardImportTracker.activate(); |
| 63 | + onDidImportTensorBoardListener.never().verify(); |
| 64 | + }); |
| 65 | + test('Do not fire event if language is not Python', async () => { |
| 66 | + const document = documentManager.addDocument( |
| 67 | + 'import tensorflow as tf\nfrom torch.utils import foo', |
| 68 | + 'foo.cpp', |
| 69 | + 'cpp' |
| 70 | + ); |
| 71 | + await documentManager.showTextDocument(document); |
| 72 | + await tensorBoardImportTracker.activate(); |
| 73 | + onDidImportTensorBoardListener.never().verify(); |
| 74 | + }); |
| 75 | + test('Ignore docstrings', async () => { |
| 76 | + const document = documentManager.addDocument( |
| 77 | + `""" |
| 78 | +import tensorboard |
| 79 | +"""`, |
| 80 | + 'foo.py' |
| 81 | + ); |
| 82 | + await documentManager.showTextDocument(document); |
| 83 | + await tensorBoardImportTracker.activate(); |
| 84 | + onDidImportTensorBoardListener.never().verify(); |
| 85 | + }); |
| 86 | +}); |
0 commit comments