Shelex/vscode-cy-helper

Extension causes an exception if it gets activated without a workspace folder opened

segevfiner opened this issue · 3 comments

Describe the bug
The extension causes an exception if it gets activated without a workspace folder opened. This is happening to me a lot during launching another extension in debug mode for development. I'm not sure what activation event causes this extension to activate, but something does and then it errors on vscode.workspace.workspaceFolders being undefined.

Exception has occurred: TypeError: Cannot read properties of undefined (reading '0')
t VS.root (/Users/segevfiner/.vscode/extensions/shevtsov.vscode-cy-helper-2.4.0/src/helper/vscodeWrapper.js:54:48)
	at Object.<anonymous> (/Users/segevfiner/.vscode/extensions/shevtsov.vscode-cy-helper-2.4.0/src/openCustomCommand.js:8:21)
	at Module._compile (node:internal/modules/cjs/loader:1163:14)
	at Object..js (node:internal/modules/cjs/loader:1216:10)
	at Module.load (node:internal/modules/cjs/loader:1035:32)
	at node:internal/modules/cjs/loader:876:12
	at Function.<anonymous> (node:electron/js2c/asar_bundle:5:13343)
	at Function.<anonymous> (/Applications/Visual Studio Code.app/Contents/Resources/app/out/vs/workbench/api/node/extensionHostProcess.js:102:32307)
	at Function.<anonymous> (/Applications/Visual Studio Code.app/Contents/Resources/app/out/vs/workbench/api/node/extensionHostProcess.js:102:28750)
	at Function._load (/Applications/Visual Studio Code.app/Contents/Resources/app/out/vs/workbench/api/node/extensionHostProcess.js:97:61719)
	at Module.require (node:internal/modules/cjs/loader:1059:19)
	at require (node:internal/modules/cjs/helpers:102:18)
	at Object.<anonymous> (/Users/segevfiner/.vscode/extensions/shevtsov.vscode-cy-helper-2.4.0/src/extension.js:4:31)
	at Module._compile (node:internal/modules/cjs/loader:1163:14)
	at Object..js (node:internal/modules/cjs/loader:1216:10)
	at Module.load (node:internal/modules/cjs/loader:1035:32)
	at node:internal/modules/cjs/loader:876:12
	at Function.<anonymous> (node:electron/js2c/asar_bundle:5:13343)
	at Function.<anonymous> (/Applications/Visual Studio Code.app/Contents/Resources/app/out/vs/workbench/api/node/extensionHostProcess.js:102:32307)
	at Function.<anonymous> (/Applications/Visual Studio Code.app/Contents/Resources/app/out/vs/workbench/api/node/extensionHostProcess.js:102:28750)
	at Function._load (/Applications/Visual Studio Code.app/Contents/Resources/app/out/vs/workbench/api/node/extensionHostProcess.js:97:61719)
	at Module.require (node:internal/modules/cjs/loader:1059:19)
	at require (node:internal/modules/cjs/helpers:102:18)
	at Function.r [as __$__nodeRequire] (/Applications/Visual Studio Code.app/Contents/Resources/app/out/vs/loader.js:5:101)
	at m._loadCommonJSModule (/Applications/Visual Studio Code.app/Contents/Resources/app/out/vs/workbench/api/node/extensionHostProcess.js:102:30353)
	at m._doActivateExtension (/Applications/Visual Studio Code.app/Contents/Resources/app/out/vs/workbench/api/node/extensionHostProcess.js:88:14751)
	at m._activateExtension (/Applications/Visual Studio Code.app/Contents/Resources/app/out/vs/workbench/api/node/extensionHostProcess.js:88:13702)
	at processTicksAndRejections (node:internal/process/task_queues:96:5)
	at async _activate (/Applications/Visual Studio Code.app/Contents/Resources/app/out/vs/workbench/api/node/extensionHostProcess.js:83:8180)
	at async _waitForDepsThenActivate (/Applications/Visual Studio Code.app/Contents/Resources/app/out/vs/workbench/api/node/extensionHostProcess.js:83:8122)
	at async _initialize (/Applications/Visual Studio Code.app/Contents/Resources/app/out/vs/workbench/api/node/extensionHostProcess.js:83:7486)

To Reproduce
Steps to reproduce the behavior:

  1. Open an empty VS Code window with no folder.
  2. Do anything that will cause the extension to activate, such as selecting any of its commands.
  3. See an error notification.

Expected behavior
No errors.

Environment (please complete the following information):

  • Extension version: 2.4.0
  • VS Code version: 1.67.1
  • OS: Windows | Mac | Linux (distro): macOS 12.3.1

** Developer Tools Console Output **

notificationsAlerts.ts:40 TypeError: Cannot read properties of undefined (reading '0')
	at VS.root (vscode-file://vscode-app/Users/segevfiner/.vscode/extensions/shevtsov.vscode-cy-helper-2.4.0/src/helper/vscodeWrapper.js:54:48)
	at Object.<anonymous> (vscode-file://vscode-app/Users/segevfiner/.vscode/extensions/shevtsov.vscode-cy-helper-2.4.0/src/openCustomCommand.js:8:21)
	at Module._compile (node:internal/modules/cjs/loader:1163:14)
	at Object..js (node:internal/modules/cjs/loader:1216:10)
	at Module.load (node:internal/modules/cjs/loader:1035:32)
	at node:internal/modules/cjs/loader:876:12
	at Function.<anonymous> (node:electron/js2c/asar_bundle:5:13343)
	at Function.<anonymous> (vscode-file://vscode-app/Applications/Visual Studio Code.app/Contents/Resources/app/out/vs/workbench/api/node/extensionHostProcess.js:102:32307)
	at Function.<anonymous> (vscode-file://vscode-app/Applications/Visual Studio Code.app/Contents/Resources/app/out/vs/workbench/api/node/extensionHostProcess.js:102:28750)
	at Function._load (vscode-file://vscode-app/Applications/Visual Studio Code.app/Contents/Resources/app/out/vs/workbench/api/node/extensionHostProcess.js:97:61719)
	at Module.require (node:internal/modules/cjs/loader:1059:19)
	at require (node:internal/modules/cjs/helpers:102:18)
	at Object.<anonymous> (vscode-file://vscode-app/Users/segevfiner/.vscode/extensions/shevtsov.vscode-cy-helper-2.4.0/src/extension.js:4:31)
	at Module._compile (node:internal/modules/cjs/loader:1163:14)
	at Object..js (node:internal/modules/cjs/loader:1216:10)
	at Module.load (node:internal/modules/cjs/loader:1035:32)
	at node:internal/modules/cjs/loader:876:12
	at Function.<anonymous> (node:electron/js2c/asar_bundle:5:13343)
	at Function.<anonymous> (vscode-file://vscode-app/Applications/Visual Studio Code.app/Contents/Resources/app/out/vs/workbench/api/node/extensionHostProcess.js:102:32307)
	at Function.<anonymous> (vscode-file://vscode-app/Applications/Visual Studio Code.app/Contents/Resources/app/out/vs/workbench/api/node/extensionHostProcess.js:102:28750)
	at Function._load (vscode-file://vscode-app/Applications/Visual Studio Code.app/Contents/Resources/app/out/vs/workbench/api/node/extensionHostProcess.js:97:61719)
	at Module.require (node:internal/modules/cjs/loader:1059:19)
	at require (node:internal/modules/cjs/helpers:102:18)
	at Function.r [as __$__nodeRequire] (vscode-file://vscode-app/Applications/Visual Studio Code.app/Contents/Resources/app/out/vs/loader.js:5:101)
	at m._loadCommonJSModule (vscode-file://vscode-app/Applications/Visual Studio Code.app/Contents/Resources/app/out/vs/workbench/api/node/extensionHostProcess.js:102:30353)
	at m._doActivateExtension (vscode-file://vscode-app/Applications/Visual Studio Code.app/Contents/Resources/app/out/vs/workbench/api/node/extensionHostProcess.js:88:14751)
	at m._activateExtension (vscode-file://vscode-app/Applications/Visual Studio Code.app/Contents/Resources/app/out/vs/workbench/api/node/extensionHostProcess.js:88:13702)
	at processTicksAndRejections (node:internal/process/task_queues:96:5)
	at async _activate (vscode-file://vscode-app/Applications/Visual Studio Code.app/Contents/Resources/app/out/vs/workbench/api/node/extensionHostProcess.js:83:8180)
	at async _waitForDepsThenActivate (vscode-file://vscode-app/Applications/Visual Studio Code.app/Contents/Resources/app/out/vs/workbench/api/node/extensionHostProcess.js:83:8122)
	at async _initialize (vscode-file://vscode-app/Applications/Visual Studio Code.app/Contents/Resources/app/out/vs/workbench/api/node/extensionHostProcess.js:83:7486)

Fix released in v2.5.0.
Could you please check that resolved your case?

I'm not seeing the error, but the extension might still fail to activate in this case, possibly hanging the extension host as I saw a warning about that in the dev tools.

@segevfiner I have added additional guards to minimize issues when workspace cannot be identified, went through commands with empty window and can confirm that each command call causes extension to activate, but only for that command execution, which from my point is fine, because it should activate when you open a workspace.
Maybe some specific command causes some issue for you?