diff --git a/packages/cli/src/config/extension-manager.ts b/packages/cli/src/config/extension-manager.ts index 8dbbfe305b..199ca97039 100644 --- a/packages/cli/src/config/extension-manager.ts +++ b/packages/cli/src/config/extension-manager.ts @@ -850,7 +850,7 @@ Would you like to attempt to install via "git clone" instead?`, if (scope !== SettingScope.Session) { const scopePath = - scope === SettingScope.Workspace ? this.workspaceDir : homedir(); + scope === SettingScope.Workspace ? this.workspaceDir : '/'; this.extensionEnablementManager.disable(name, true, scopePath); } await logExtensionDisable( @@ -885,7 +885,7 @@ Would you like to attempt to install via "git clone" instead?`, if (scope !== SettingScope.Session) { const scopePath = - scope === SettingScope.Workspace ? this.workspaceDir : homedir(); + scope === SettingScope.Workspace ? this.workspaceDir : '/'; this.extensionEnablementManager.enable(name, true, scopePath); } await logExtensionEnable( diff --git a/packages/cli/src/config/extension.test.ts b/packages/cli/src/config/extension.test.ts index 7acaf2cc67..1bc31f5e73 100644 --- a/packages/cli/src/config/extension.test.ts +++ b/packages/cli/src/config/extension.test.ts @@ -2032,6 +2032,25 @@ ${INSTALL_WARNING_MESSAGE}`, SettingScope.Workspace, ); }); + + it('should disable an extension globally at the user scope', async () => { + createExtension({ + extensionsDir: userExtensionsDir, + name: 'ext1', + version: '1.0.0', + }); + await extensionManager.loadExtensions(); + await extensionManager.disableExtension('ext1', SettingScope.User); + + // Should be disabled in home dir + expect( + isEnabled({ name: 'ext1', enabledForPath: userExtensionsDir }), + ).toBe(false); + // Should be disabled in some other random path (global) + expect(isEnabled({ name: 'ext1', enabledForPath: '/tmp/other' })).toBe( + false, + ); + }); }); describe('enableExtension', () => { @@ -2100,6 +2119,29 @@ ${INSTALL_WARNING_MESSAGE}`, SettingScope.Workspace, ); }); + + it('should enable an extension globally at the user scope', async () => { + createExtension({ + extensionsDir: userExtensionsDir, + name: 'ext1', + version: '1.0.0', + }); + await extensionManager.loadExtensions(); + + await extensionManager.disableExtension('ext1', SettingScope.User); + expect(isEnabled({ name: 'ext1', enabledForPath: '/tmp/other' })).toBe( + false, + ); + + await extensionManager.enableExtension('ext1', SettingScope.User); + + expect(isEnabled({ name: 'ext1', enabledForPath: '/tmp/other' })).toBe( + true, + ); + expect( + isEnabled({ name: 'ext1', enabledForPath: userExtensionsDir }), + ).toBe(true); + }); }); });