diff --git a/src/extension.ts b/src/extension.ts index d89708440f..ad0a76ac80 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -217,6 +217,7 @@ export async function activate( externalApi.unregisterExternalExtension(uuid), getPowerShellVersionDetails: (uuid) => externalApi.getPowerShellVersionDetails(uuid), + getRegisteredExtensions: () => externalApi.getRegisteredExtensions(), waitUntilStarted: (uuid) => externalApi.waitUntilStarted(uuid), getStorageUri: () => externalApi.getStorageUri(), getLogUri: () => externalApi.getLogUri(), diff --git a/src/features/ExternalApi.ts b/src/features/ExternalApi.ts index cafd856c26..d4577ea940 100644 --- a/src/features/ExternalApi.ts +++ b/src/features/ExternalApi.ts @@ -19,6 +19,7 @@ export interface IPowerShellExtensionClient { getPowerShellVersionDetails( uuid: string, ): Promise; + getRegisteredExtensions(): Map; waitUntilStarted(uuid: string): Promise; getStorageUri(): vscode.Uri; getLogUri(): vscode.Uri; @@ -135,6 +136,21 @@ export class ExternalApiFeature implements IPowerShellExtensionClient { return ExternalApiFeature.registeredExternalExtension.get(uuid)!; } + /* + DESCRIPTION: + returns a map of all registered extensions that have registered. + + USAGE: + powerShellExtensionClient.getRegisteredExtensions(); + + RETURNS: + a map containing the UUID as the key and an IExternalExtension showing + the extension id and api version. + */ + public getRegisteredExtensions(): Map { + return ExternalApiFeature.registeredExternalExtension; + } + /* DESCRIPTION: This will fetch the version details of the PowerShell used to start diff --git a/test/utils.ts b/test/utils.ts index aef25f0e64..293b69ece0 100644 --- a/test/utils.ts +++ b/test/utils.ts @@ -82,6 +82,15 @@ export async function ensureExtensionIsActivated(): Promise { const extension = await ensureExtensionIsActivated(); + for (const [ + _name, + externalExtension, + ] of extension.getRegisteredExtensions().entries()) { + if (externalExtension.id === extensionId) { + extension.unregisterExternalExtension(_name); + } + }; + const sessionId = extension.registerExternalExtension(extensionId); await extension.waitUntilStarted(sessionId); extension.unregisterExternalExtension(sessionId);