Ensure node-pty module is accessbile for chat extension (#276388)

* Ensure node-pty module is accessbile for chat extension

* Update extensions/vscode-api-tests/src/singlefolder-tests/chat.test.ts

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update extensions/vscode-api-tests/src/singlefolder-tests/chat.test.ts

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
This commit is contained in:
Don Jayamanne
2025-11-10 03:02:15 +00:00
committed by GitHub
parent 6a3b90260e
commit 6644d4f0cb

View File

@@ -4,8 +4,10 @@
*--------------------------------------------------------------------------------------------*/
import * as assert from 'assert';
import * as fs from 'fs';
import { join } from 'path';
import 'mocha';
import { ChatContext, ChatRequest, ChatRequestTurn, ChatRequestTurn2, ChatResult, Disposable, Event, EventEmitter, chat, commands, lm } from 'vscode';
import { ChatContext, ChatRequest, ChatRequestTurn, ChatRequestTurn2, ChatResult, Disposable, env, Event, EventEmitter, chat, commands, lm, UIKind } from 'vscode';
import { DeferredPromise, asPromise, assertNoRpc, closeAllEditors, delay, disposeAll } from '../utils';
suite('chat', () => {
@@ -214,4 +216,28 @@ suite('chat', () => {
// Title provider was not called again
assert.strictEqual(calls, 1);
});
test('can access node-pty module', async function () {
// Required for copilot cli in chat extension.
if (env.uiKind === UIKind.Web) {
this.skip();
}
const nodePtyModules = [
join(env.appRoot, 'node_modules.asar', 'node-pty'),
join(env.appRoot, 'node_modules', 'node-pty')
];
for (const modulePath of nodePtyModules) {
// try to stat and require module
try {
await fs.promises.stat(modulePath);
const nodePty = require(modulePath);
assert.ok(nodePty, `Successfully required node-pty from ${modulePath}`);
return;
} catch (err) {
// failed to require, try next
}
}
assert.fail('Failed to find and require node-pty module');
});
});