Download packages/core/src/utils/envExpansion.test.ts from SaylorTwift/gemini-cli: direct link, hf CLI and curl.
- Browser
- Download file 2.94 kB
-
https://huggingface.co/SaylorTwift/gemini-cli/resolve/main/packages/core/src/utils/envExpansion.test.ts
- Command line
-
hf download hf://SaylorTwift/gemini-cli/packages/core/src/utils/envExpansion.test.ts
-
curl -L -o envExpansion.test.ts https://huggingface.co/SaylorTwift/gemini-cli/resolve/main/packages/core/src/utils/envExpansion.test.ts
2.94 kB
| /** | |
| * @license | |
| * Copyright 2026 Google LLC | |
| * SPDX-License-Identifier: Apache-2.0 | |
| */ | |
| import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest'; | |
| import { expandEnvVars } from './envExpansion.js'; | |
| describe('expandEnvVars', () => { | |
| const defaultEnv = { | |
| USER: 'morty', | |
| HOME: '/home/morty', | |
| TEMP: 'C:\\Temp', | |
| EMPTY: '', | |
| }; | |
| describe('POSIX behavior (non-Windows)', () => { | |
| beforeEach(() => { | |
| vi.spyOn(process, 'platform', 'get').mockReturnValue('darwin'); | |
| }); | |
| afterEach(() => { | |
| vi.restoreAllMocks(); | |
| }); | |
| it.each([ | |
| ['$VAR (POSIX)', 'Hello $USER', defaultEnv, 'Hello morty'], | |
| [ | |
| '${VAR} (POSIX)', | |
| 'Welcome to ${HOME}', | |
| defaultEnv, | |
| 'Welcome to /home/morty', | |
| ], | |
| [ | |
| 'should NOT expand %VAR% on non-Windows', | |
| 'Data in %TEMP%', | |
| defaultEnv, | |
| 'Data in %TEMP%', | |
| ], | |
| [ | |
| 'mixed formats (only POSIX expanded)', | |
| '$USER lives in ${HOME} on %TEMP%', | |
| defaultEnv, | |
| 'morty lives in /home/morty on %TEMP%', | |
| ], | |
| [ | |
| 'missing variables (POSIX only)', | |
| 'Missing $UNDEFINED and ${NONE} and %MISSING%', | |
| defaultEnv, | |
| 'Missing and and %MISSING%', | |
| ], | |
| [ | |
| 'empty or undefined values', | |
| 'Value is "$EMPTY"', | |
| defaultEnv, | |
| 'Value is ""', | |
| ], | |
| [ | |
| 'original string if no variables', | |
| 'No vars here', | |
| defaultEnv, | |
| 'No vars here', | |
| ], | |
| ['literal values like "1234"', '1234', defaultEnv, '1234'], | |
| ['empty input string', '', defaultEnv, ''], | |
| [ | |
| 'complex paths', | |
| '${HOME}/bin:$PATH', | |
| { ...defaultEnv, PATH: '/usr/bin' }, | |
| '/home/morty/bin:/usr/bin', | |
| ], | |
| ])('should handle %s', (_, input, env, expected) => { | |
| expect(expandEnvVars(input, env)).toBe(expected); | |
| }); | |
| }); | |
| describe('Windows behavior', () => { | |
| beforeEach(() => { | |
| vi.spyOn(process, 'platform', 'get').mockReturnValue('win32'); | |
| }); | |
| afterEach(() => { | |
| vi.restoreAllMocks(); | |
| }); | |
| it.each([ | |
| ['$VAR (POSIX)', 'Hello $USER', defaultEnv, 'Hello morty'], | |
| [ | |
| '${VAR} (POSIX)', | |
| 'Welcome to ${HOME}', | |
| defaultEnv, | |
| 'Welcome to /home/morty', | |
| ], | |
| [ | |
| 'should expand %VAR% on Windows', | |
| 'Data in %TEMP%', | |
| defaultEnv, | |
| 'Data in C:\\Temp', | |
| ], | |
| [ | |
| 'mixed formats (both expanded)', | |
| '$USER lives in ${HOME} on %TEMP%', | |
| defaultEnv, | |
| 'morty lives in /home/morty on C:\\Temp', | |
| ], | |
| [ | |
| 'missing variables (all expanded to empty)', | |
| 'Missing $UNDEFINED and ${NONE} and %MISSING%', | |
| defaultEnv, | |
| 'Missing and and ', | |
| ], | |
| ])('should handle %s', (_, input, env, expected) => { | |
| expect(expandEnvVars(input, env)).toBe(expected); | |
| }); | |
| }); | |
| }); | |