Skip to content

Be able to disable automatic test discovery on save #1037

Closed
@amittleider

Description

@amittleider

Environment data

  • VS Code version:
Version 1.20.1
Commit f88bbf9137d24d36d968ea6b2911786bfe103002
Date 2018-02-13T15:31:21.019Z
Shell 1.7.9
Renderer 58.0.3029.110
Node 7.9.0
Architecture x64
  • Extension version (available under the Extensions sidebar): `2018.2.1

  • OS and version:

Distributor ID: Ubuntu
Description:    Ubuntu 16.04.1 LTS
Release:        16.04
Codename:       xenial
  • Python version: Python 3.6.3
  • Type of virtual environment used (if applicable): venv

Steps to reproduce:

  1. Launch VS code with a python environment configured
  2. Make a test file and run it using the command Python: Run Current Unit Test file in the vscode command console. This will run the test discovery first and then launch your unit tests.
  3. Make a minor change to your unit test file and save it.
  4. Notice that the test discovery runs again, even though you never added a test.

Behavior/suggestion

Unit tests are discovered through nosetests whenever a test file is saved. This triggers a process that takes about 4 seconds for me. Since the tests must be discovered before they can be run, this makes it time consuming to make small changes to a test file.

One suggestion would be to have the option to disable the test discovery when a file is saved, and have an optional command to manually discover unit tests.

It's possible this behavior is coming from src/client/unittests/main.ts:onDocumentSaved, line 69 const tests = await testManager.discoverTests(CommandSource.auto, false, true);

Logs

Output for Python in the Output panel (ViewOutput, change the drop-down the upper-right of the Output panel to Python)

This is from the Python Test Logs window:

image

Output from Console under the Developer Tools panel (toggle Developer Tools on under Help)
This is probably irrelevant but I'll put it anyways

/usr/share/code/resources/app/out/vs/workbench/workbench.main.js:253 [Extension Host] [IPC Library: Search] (node:7983) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 exit listeners added. Use emitter.setMaxListeners() to increase limit
t.log @ /usr/share/code/resources/app/out/vs/workbench/workbench.main.js:253
mainThreadExtensionService.ts:43 [njpwerner.autodocstring]Cannot read property 'rangeLength' of undefined
e.$onExtensionRuntimeError @ mainThreadExtensionService.ts:43
e._doInvokeHandler @ rpcProtocol.ts:174
e._invokeHandler @ rpcProtocol.ts:159
e._receiveRequest @ rpcProtocol.ts:108
e._receiveOneMessage @ rpcProtocol.ts:90
(anonymous) @ rpcProtocol.ts:33
(anonymous) @ rpcProtocol.ts:213
e.fire @ event.ts:142
(anonymous) @ ipc.net.ts:81
emitOne @ events.js:96
emit @ events.js:191
readableAddChunk @ _stream_readable.js:178
Readable.push @ _stream_readable.js:136
onread @ net.js:560
mainThreadExtensionService.ts:44 TypeError: Cannot read property 'rangeLength' of undefined
	at activateOnEnter (/home/andrew/.vscode/extensions/njpwerner.autodocstring-0.2.0/out/src/extension.js:21:38)
	at context.subscriptions.push.vs.workspace.onDidChangeTextDocument.changeEvent (/home/andrew/.vscode/extensions/njpwerner.autodocstring-0.2.0/out/src/extension.js:13:90)
	at e.fire (/usr/share/code/resources/app/out/vs/workbench/node/extensionHostProcess.js:88:729)
	at e.$acceptDirtyStateChanged (/usr/share/code/resources/app/out/vs/workbench/node/extensionHostProcess.js:623:1010)
	at e._doInvokeHandler (/usr/share/code/resources/app/out/vs/workbench/node/extensionHostProcess.js:584:983)
	at e._invokeHandler (/usr/share/code/resources/app/out/vs/workbench/node/extensionHostProcess.js:584:701)
	at e._receiveRequest (/usr/share/code/resources/app/out/vs/workbench/node/extensionHostProcess.js:583:836)
	at e._receiveOneMessage (/usr/share/code/resources/app/out/vs/workbench/node/extensionHostProcess.js:583:605)
	at /usr/share/code/resources/app/out/vs/workbench/node/extensionHostProcess.js:582:671
	at /usr/share/code/resources/app/out/vs/workbench/node/extensionHostProcess.js:585:523
e.$onExtensionRuntimeError @ mainThreadExtensionService.ts:44
e._doInvokeHandler @ rpcProtocol.ts:174
e._invokeHandler @ rpcProtocol.ts:159
e._receiveRequest @ rpcProtocol.ts:108
e._receiveOneMessage @ rpcProtocol.ts:90
(anonymous) @ rpcProtocol.ts:33
(anonymous) @ rpcProtocol.ts:213
e.fire @ event.ts:142
(anonymous) @ ipc.net.ts:81
emitOne @ events.js:96
emit @ events.js:191
readableAddChunk @ _stream_readable.js:178
Readable.push @ _stream_readable.js:136
onread @ net.js:560
mainThreadExtensionService.ts:43 [njpwerner.autodocstring]Cannot read property 'rangeLength' of undefined
e.$onExtensionRuntimeError @ mainThreadExtensionService.ts:43
e._doInvokeHandler @ rpcProtocol.ts:174
e._invokeHandler @ rpcProtocol.ts:159
e._receiveRequest @ rpcProtocol.ts:108
e._receiveOneMessage @ rpcProtocol.ts:90
(anonymous) @ rpcProtocol.ts:33
(anonymous) @ rpcProtocol.ts:213
e.fire @ event.ts:142
(anonymous) @ ipc.net.ts:81
emitOne @ events.js:96
emit @ events.js:191
readableAddChunk @ _stream_readable.js:178
Readable.push @ _stream_readable.js:136
onread @ net.js:560
mainThreadExtensionService.ts:44 TypeError: Cannot read property 'rangeLength' of undefined
	at activateOnEnter (/home/andrew/.vscode/extensions/njpwerner.autodocstring-0.2.0/out/src/extension.js:21:38)
	at context.subscriptions.push.vs.workspace.onDidChangeTextDocument.changeEvent (/home/andrew/.vscode/extensions/njpwerner.autodocstring-0.2.0/out/src/extension.js:13:90)
	at e.fire (/usr/share/code/resources/app/out/vs/workbench/node/extensionHostProcess.js:88:729)
	at e.$acceptDirtyStateChanged (/usr/share/code/resources/app/out/vs/workbench/node/extensionHostProcess.js:623:1010)
	at e.$acceptModelSaved (/usr/share/code/resources/app/out/vs/workbench/node/extensionHostProcess.js:623:793)
	at e._doInvokeHandler (/usr/share/code/resources/app/out/vs/workbench/node/extensionHostProcess.js:584:983)
	at e._invokeHandler (/usr/share/code/resources/app/out/vs/workbench/node/extensionHostProcess.js:584:701)
	at e._receiveRequest (/usr/share/code/resources/app/out/vs/workbench/node/extensionHostProcess.js:583:836)
	at e._receiveOneMessage (/usr/share/code/resources/app/out/vs/workbench/node/extensionHostProcess.js:583:605)
	at /usr/share/code/resources/app/out/vs/workbench/node/extensionHostProcess.js:582:671
e.$onExtensionRuntimeError @ mainThreadExtensionService.ts:44
e._doInvokeHandler @ rpcProtocol.ts:174
e._invokeHandler @ rpcProtocol.ts:159
e._receiveRequest @ rpcProtocol.ts:108
e._receiveOneMessage @ rpcProtocol.ts:90
(anonymous) @ rpcProtocol.ts:33
(anonymous) @ rpcProtocol.ts:213
e.fire @ event.ts:142
(anonymous) @ ipc.net.ts:81
emitOne @ events.js:96
emit @ events.js:191
readableAddChunk @ _stream_readable.js:178
Readable.push @ _stream_readable.js:136
onread @ net.js:560
console.ts:123 [Extension Host] (node:7844) DeprecationWarning: os.tmpDir() is deprecated. Use os.tmpdir() instead.
t.log @ console.ts:123
t._logExtensionHostMessage @ extensionHost.ts:394
(anonymous) @ extensionHost.ts:211
emitTwo @ events.js:106
emit @ events.js:194
process.nextTick @ internal/child_process.js:766
_combinedTickCallback @ internal/process/next_tick.js:73
_tickCallback @ internal/process/next_tick.js:104
console.ts:123 [IPC Library: Search] (node:8278) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 exit listeners added. Use emitter.setMaxListeners() to increase limit
t.log @ console.ts:123
(anonymous) @ ipc.cp.ts:157
e.fire @ event.ts:142
i @ event.ts:532
emitTwo @ events.js:106
emit @ events.js:194
process.nextTick @ internal/child_process.js:766
_combinedTickCallback @ internal/process/next_tick.js:73
_tickCallback @ internal/process/next_tick.js:104
6TMSyntax.ts:384 Line (nose.plugins.co...): longer than 20k characters, tokenization skipped.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions