From 4d4e16cc8c10f99418e196b16d413b927741b59f Mon Sep 17 00:00:00 2001 From: christine betts Date: Wed, 28 Jan 2026 11:11:21 -0500 Subject: [PATCH] [extension config] Make breaking optional value non-optional (#17785) --- packages/cli/src/commands/extensions/configure.test.ts | 7 +++++++ packages/cli/src/commands/extensions/configure.ts | 2 ++ .../cli/src/config/extension-manager-hydration.test.ts | 1 + packages/cli/src/config/extensions/extensionSettings.ts | 2 +- 4 files changed, 11 insertions(+), 1 deletion(-) diff --git a/packages/cli/src/commands/extensions/configure.test.ts b/packages/cli/src/commands/extensions/configure.test.ts index 70c30e6945..fc7a3a085b 100644 --- a/packages/cli/src/commands/extensions/configure.test.ts +++ b/packages/cli/src/commands/extensions/configure.test.ts @@ -22,6 +22,7 @@ import { type ExtensionSetting, } from '../../config/extensions/extensionSettings.js'; import prompts from 'prompts'; +import * as fs from 'node:fs'; const { mockExtensionManager, @@ -79,11 +80,15 @@ vi.mock('../../config/settings.js', () => ({ })); describe('extensions configure command', () => { + let tempWorkspaceDir: string; + beforeEach(() => { vi.spyOn(debugLogger, 'log'); vi.spyOn(debugLogger, 'error'); vi.clearAllMocks(); + tempWorkspaceDir = fs.mkdtempSync('gemini-cli-test-workspace'); + vi.spyOn(process, 'cwd').mockReturnValue(tempWorkspaceDir); // Default behaviors mockLoadSettings.mockReturnValue({ merged: {} }); mockGetExtensionAndManager.mockResolvedValue({ @@ -141,6 +146,7 @@ describe('extensions configure command', () => { 'TEST_VAR', promptForSetting, 'user', + tempWorkspaceDir, ); }); @@ -186,6 +192,7 @@ describe('extensions configure command', () => { 'VAR_1', promptForSetting, 'user', + tempWorkspaceDir, ); }); diff --git a/packages/cli/src/commands/extensions/configure.ts b/packages/cli/src/commands/extensions/configure.ts index 86a1d7e255..0ee02fe635 100644 --- a/packages/cli/src/commands/extensions/configure.ts +++ b/packages/cli/src/commands/extensions/configure.ts @@ -111,6 +111,7 @@ async function configureSpecificSetting( settingKey, promptForSetting, scope, + process.cwd(), ); } @@ -218,6 +219,7 @@ async function configureExtensionSettings( setting.envVar, promptForSetting, scope, + process.cwd(), ); } } diff --git a/packages/cli/src/config/extension-manager-hydration.test.ts b/packages/cli/src/config/extension-manager-hydration.test.ts index 6746a1a74a..3dc91089f9 100644 --- a/packages/cli/src/config/extension-manager-hydration.test.ts +++ b/packages/cli/src/config/extension-manager-hydration.test.ts @@ -306,6 +306,7 @@ System using model: \${MODEL_NAME} 'MY_VALUE', mockRequestSetting, ExtensionSettingScope.USER, + process.cwd(), ); await extensionManager.restartExtension(extension); diff --git a/packages/cli/src/config/extensions/extensionSettings.ts b/packages/cli/src/config/extensions/extensionSettings.ts index 482c206cd6..35624d86aa 100644 --- a/packages/cli/src/config/extensions/extensionSettings.ts +++ b/packages/cli/src/config/extensions/extensionSettings.ts @@ -207,7 +207,7 @@ export async function updateSetting( settingKey: string, requestSetting: (setting: ExtensionSetting) => Promise, scope: ExtensionSettingScope, - workspaceDir?: string, + workspaceDir: string, ): Promise { const { name: extensionName, settings } = extensionConfig; if (!settings || settings.length === 0) {