mirror of
https://github.com/google-gemini/gemini-cli.git
synced 2026-05-13 13:22:35 -07:00
don't wrap args unnecessarily (#26599)
This commit is contained in:
committed by
GitHub
parent
90304b279c
commit
a809bc7c51
@@ -181,8 +181,9 @@ describe('<SessionSummaryDisplay />', () => {
|
||||
);
|
||||
const output = lastFrame();
|
||||
|
||||
// PowerShell wraps strings in single quotes
|
||||
expect(output).toContain("gemini --resume '1234-abcd-5678-efgh'");
|
||||
// PowerShell doesn't wraps UUID in single quotes because
|
||||
// it contains no special characters.
|
||||
expect(output).toContain('gemini --resume 1234-abcd-5678-efgh');
|
||||
unmount();
|
||||
});
|
||||
|
||||
|
||||
@@ -418,8 +418,8 @@ describe('escapeShellArg', () => {
|
||||
});
|
||||
|
||||
it('should escape internal double quotes by doubling them', () => {
|
||||
const result = escapeShellArg('He said "Hello"', 'cmd');
|
||||
expect(result).toBe('"He said ""Hello"""');
|
||||
const result = escapeShellArg('hello "world"', 'cmd');
|
||||
expect(result).toBe('"hello ""world"""');
|
||||
});
|
||||
|
||||
it('should handle empty strings', () => {
|
||||
@@ -429,7 +429,12 @@ describe('escapeShellArg', () => {
|
||||
});
|
||||
|
||||
describe('when shell is PowerShell', () => {
|
||||
it('should wrap simple arguments in single quotes', () => {
|
||||
it('should return simple alphanumeric arguments without quotes', () => {
|
||||
const result = escapeShellArg('my-argument-123.txt', 'powershell');
|
||||
expect(result).toBe('my-argument-123.txt');
|
||||
});
|
||||
|
||||
it('should wrap arguments with spaces in single quotes', () => {
|
||||
const result = escapeShellArg('search term', 'powershell');
|
||||
expect(result).toBe("'search term'");
|
||||
});
|
||||
|
||||
@@ -695,9 +695,17 @@ export function escapeShellArg(arg: string, shell: ShellType): string {
|
||||
|
||||
switch (shell) {
|
||||
case 'powershell':
|
||||
// For PowerShell, wrap in single quotes and escape internal single quotes by doubling them.
|
||||
// For PowerShell, avoid quoting simple alphanumeric strings (like UUIDs).
|
||||
if (/^[a-zA-Z0-9\-_.]+$/.test(arg)) {
|
||||
return arg;
|
||||
}
|
||||
// Otherwise, wrap in single quotes and escape internal single quotes by doubling them.
|
||||
return `'${arg.replace(/'/g, "''")}'`;
|
||||
case 'cmd':
|
||||
// Avoid quoting simple strings for cmd.exe as well.
|
||||
if (/^[a-zA-Z0-9\-_.]+$/.test(arg)) {
|
||||
return arg;
|
||||
}
|
||||
// Simple Windows escaping for cmd.exe: wrap in double quotes and escape inner double quotes.
|
||||
return `"${arg.replace(/"/g, '""')}"`;
|
||||
case 'bash':
|
||||
|
||||
Reference in New Issue
Block a user