vscode-docs
vscode-docs copied to clipboard
Example for Testing extensions does not work on Windows.
Does this issue occur when all extensions are disabled?: Yes
- VS Code Version: 1.84.0
- OS Version: Windows 11
Steps to Reproduce:
- Execute code similar to the one exhibited at https://code.visualstudio.com/api/working-with-extensions/testing-extension#custom-setup-with-vscodetestelectron:
async function main() {
try {
const extensionDevelopmentPath = path.resolve(__dirname, '../../../');
const extensionTestsPath = path.resolve(__dirname, './suite/index');
const vscodeExecutablePath = await downloadAndUnzipVSCode('1.40.1');
const [cliPath, ...args] = resolveCliArgsFromVSCodeExecutablePath(vscodeExecutablePath);
// Use cp.spawn / cp.exec for custom setup
cp.spawnSync(
cliPath,
[...args, '--install-extension', '<EXTENSION-ID-OR-PATH-TO-VSIX>'],
{
encoding: 'utf-8',
stdio: 'inherit'
// --- BUG: MISSING shell: true option here
}
);
// Run the extension test
await runTests({
// Use the specified `code` executable
vscodeExecutablePath,
extensionDevelopmentPath,
extensionTestsPath
});
} catch (err) {
console.error('Failed to run tests');
process.exit(1);
}
}
The problem is that on Windows, the cli evaluates to %vscodeTestDir%\bin\Code that is not a Windows executable, but a bash shell script, so direct invocation using spanwSync fails. There must be shell: true option for the spawnSync that launches the command using windows command shell, that properly recognizes presence of Code.cmd and uses that.
Please correct the example in the extension development guide.
Thanks for creating this issue! It looks like you may be using an old version of VS Code, the latest stable release is 1.89.1. Please try upgrading to the latest version and checking whether this issue remains.
Happy Coding!
I started experiencing the same issue during vscode testing. For a long time, I had no issues, but my agent pool image updated and cp.spawnSync silently stopped installing the extension required.
Reproduces the error (agent pool vm): OS Build: 22631.3593 Version of VSCode installed by runtest.js: 1.89.1 Powershell version: 5.1.22621.2506 Node version: v20.13.1
Does not reproduce the error (dev machine): OS Build: 22631.3593 Version of VSCode installed by runtest.js: 1.89.1 Powershell version: 5.1.22621.2506 Node version: v20.11.0
Using the cp.spawnSync shell: true option works as a workaround for me.
Modern versions of test-electron include a helper you can use, e.g.
await runVSCodeCommand(['--install-extension', 'ms-python.python']);