diff options
| author | joshualitt <[email protected]> | 2025-08-01 12:30:39 -0700 |
|---|---|---|
| committer | GitHub <[email protected]> | 2025-08-01 19:30:39 +0000 |
| commit | 67d16992cfc6b18f1d242865e0fbd8f5f40cf25f (patch) | |
| tree | a6483f9846d837a7913c814999e4cbeb0532fa1d /packages/cli/src/config | |
| parent | 9382334a5ebb02ed716c73f45b469a8e8c932a13 (diff) | |
bug(cli): Prefer IPv4 dns resolution by default. (#5338)
Diffstat (limited to 'packages/cli/src/config')
| -rw-r--r-- | packages/cli/src/config/settings.test.ts | 42 | ||||
| -rw-r--r-- | packages/cli/src/config/settings.ts | 3 |
2 files changed, 45 insertions, 0 deletions
diff --git a/packages/cli/src/config/settings.test.ts b/packages/cli/src/config/settings.test.ts index ae655fe1..5a54e46e 100644 --- a/packages/cli/src/config/settings.test.ts +++ b/packages/cli/src/config/settings.test.ts @@ -777,6 +777,48 @@ describe('Settings Loading and Merging', () => { } }); + it('should correctly merge dnsResolutionOrder with workspace taking precedence', () => { + (mockFsExistsSync as Mock).mockReturnValue(true); + const userSettingsContent = { + dnsResolutionOrder: 'ipv4first', + }; + const workspaceSettingsContent = { + dnsResolutionOrder: 'verbatim', + }; + + (fs.readFileSync as Mock).mockImplementation( + (p: fs.PathOrFileDescriptor) => { + if (p === USER_SETTINGS_PATH) + return JSON.stringify(userSettingsContent); + if (p === MOCK_WORKSPACE_SETTINGS_PATH) + return JSON.stringify(workspaceSettingsContent); + return '{}'; + }, + ); + + const settings = loadSettings(MOCK_WORKSPACE_DIR); + expect(settings.merged.dnsResolutionOrder).toBe('verbatim'); + }); + + it('should use user dnsResolutionOrder if workspace is not defined', () => { + (mockFsExistsSync as Mock).mockImplementation( + (p: fs.PathLike) => p === USER_SETTINGS_PATH, + ); + const userSettingsContent = { + dnsResolutionOrder: 'verbatim', + }; + (fs.readFileSync as Mock).mockImplementation( + (p: fs.PathOrFileDescriptor) => { + if (p === USER_SETTINGS_PATH) + return JSON.stringify(userSettingsContent); + return '{}'; + }, + ); + + const settings = loadSettings(MOCK_WORKSPACE_DIR); + expect(settings.merged.dnsResolutionOrder).toBe('verbatim'); + }); + it('should leave unresolved environment variables as is', () => { const userSettingsContent = { apiKey: '$UNDEFINED_VAR' }; (mockFsExistsSync as Mock).mockImplementation( diff --git a/packages/cli/src/config/settings.ts b/packages/cli/src/config/settings.ts index 76eb1745..4f701c6d 100644 --- a/packages/cli/src/config/settings.ts +++ b/packages/cli/src/config/settings.ts @@ -38,6 +38,8 @@ export function getSystemSettingsPath(): string { } } +export type DnsResolutionOrder = 'ipv4first' | 'verbatim'; + export enum SettingScope { User = 'User', Workspace = 'Workspace', @@ -110,6 +112,7 @@ export interface Settings { disableAutoUpdate?: boolean; memoryDiscoveryMaxDirs?: number; + dnsResolutionOrder?: DnsResolutionOrder; } export interface SettingsError { |
