mirror of
https://github.com/google-gemini/gemini-cli.git
synced 2026-03-15 00:21:09 -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 () => {
|
it('should not add extra padding but preserve explicit trailing whitespace', async () => {
|
||||||
const { result } = await simulateExecution('cmd', (pty) => {
|
const { result } = await simulateExecution('cmd', (pty) => {
|
||||||
// "value" should not get terminal-width padding
|
// "value" should not get terminal-width padding
|
||||||
|
|||||||
@@ -116,8 +116,28 @@ const getFullBufferText = (terminal: pkg.Terminal): string => {
|
|||||||
const lines: string[] = [];
|
const lines: string[] = [];
|
||||||
for (let i = 0; i < buffer.length; i++) {
|
for (let i = 0; i < buffer.length; i++) {
|
||||||
const line = buffer.getLine(i);
|
const line = buffer.getLine(i);
|
||||||
const lineContent = line ? line.translateToString(true) : '';
|
if (!line) {
|
||||||
lines.push(lineContent);
|
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
|
// Remove trailing empty lines
|
||||||
|
|||||||
Reference in New Issue
Block a user