mirror of
https://github.com/google-gemini/gemini-cli.git
synced 2026-03-10 14:10:37 -07:00
Fix issue where we were passing the model content reflecting terminal line wrapping. (#14566)
This commit is contained in:
@@ -305,6 +305,24 @@ describe('ShellExecutionService', () => {
|
||||
);
|
||||
});
|
||||
|
||||
it('should not wrap long lines in the final output', async () => {
|
||||
// Set a small width to force wrapping
|
||||
const narrowConfig = { ...shellExecutionConfig, terminalWidth: 10 };
|
||||
const longString = '123456789012345'; // 15 chars, should wrap at 10
|
||||
|
||||
const { result } = await simulateExecution(
|
||||
'long-line-command',
|
||||
(pty) => {
|
||||
pty.onData.mock.calls[0][0](longString);
|
||||
pty.onExit.mock.calls[0][0]({ exitCode: 0, signal: null });
|
||||
},
|
||||
narrowConfig,
|
||||
);
|
||||
|
||||
expect(result.exitCode).toBe(0);
|
||||
expect(result.output.trim()).toBe(longString);
|
||||
});
|
||||
|
||||
it('should not add extra padding but preserve explicit trailing whitespace', async () => {
|
||||
const { result } = await simulateExecution('cmd', (pty) => {
|
||||
// "value" should not get terminal-width padding
|
||||
|
||||
@@ -116,8 +116,28 @@ const getFullBufferText = (terminal: pkg.Terminal): string => {
|
||||
const lines: string[] = [];
|
||||
for (let i = 0; i < buffer.length; i++) {
|
||||
const line = buffer.getLine(i);
|
||||
const lineContent = line ? line.translateToString(true) : '';
|
||||
lines.push(lineContent);
|
||||
if (!line) {
|
||||
continue;
|
||||
}
|
||||
// If the NEXT line is wrapped, it means it's a continuation of THIS line.
|
||||
// We should not trim the right side of this line because trailing spaces
|
||||
// might be significant parts of the wrapped content.
|
||||
// If it's not wrapped, we trim normally.
|
||||
let trimRight = true;
|
||||
if (i + 1 < buffer.length) {
|
||||
const nextLine = buffer.getLine(i + 1);
|
||||
if (nextLine?.isWrapped) {
|
||||
trimRight = false;
|
||||
}
|
||||
}
|
||||
|
||||
const lineContent = line.translateToString(trimRight);
|
||||
|
||||
if (line.isWrapped && lines.length > 0) {
|
||||
lines[lines.length - 1] += lineContent;
|
||||
} else {
|
||||
lines.push(lineContent);
|
||||
}
|
||||
}
|
||||
|
||||
// Remove trailing empty lines
|
||||
|
||||
Reference in New Issue
Block a user