mirror of
https://github.com/google-gemini/gemini-cli.git
synced 2026-05-21 01:02:54 -07:00
test(cli): use dummy stdout for Ink to prevent double writes and fix CI timeouts
This commit is contained in:
@@ -4,21 +4,13 @@
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest';
|
||||
import { describe, it, expect, vi } from 'vitest';
|
||||
import { useState, useEffect, act } from 'react';
|
||||
import { Text } from 'ink';
|
||||
import { renderHook, render } from './render.js';
|
||||
import { waitFor } from './async.js';
|
||||
|
||||
describe.sequential('render', () => {
|
||||
beforeEach(() => {
|
||||
vi.useFakeTimers();
|
||||
});
|
||||
|
||||
afterEach(() => {
|
||||
vi.useRealTimers();
|
||||
});
|
||||
|
||||
it('should render a component', async () => {
|
||||
const { lastFrame, unmount } = await render(<Text>Hello World</Text>);
|
||||
expect(lastFrame()).toBe('Hello World\n');
|
||||
|
||||
@@ -10,6 +10,7 @@ import {
|
||||
type RenderOptions,
|
||||
} from 'ink';
|
||||
import { EventEmitter } from 'node:events';
|
||||
import { Writable } from 'node:stream';
|
||||
import { Box } from 'ink';
|
||||
import { Terminal } from '@xterm/headless';
|
||||
import { vi } from 'vitest';
|
||||
@@ -298,9 +299,6 @@ class XtermStdout extends EventEmitter {
|
||||
if (vi.isFakeTimers()) {
|
||||
await vi.advanceTimersByTimeAsync(100);
|
||||
} else {
|
||||
await act(async () => {
|
||||
await new Promise((resolve) => process.nextTick(resolve));
|
||||
});
|
||||
await new Promise((resolve) => setTimeout(resolve, 100));
|
||||
}
|
||||
}
|
||||
@@ -430,9 +428,14 @@ export const render = async (
|
||||
|
||||
let instance!: InkInstance;
|
||||
stdout.clear();
|
||||
const dummyStdout = new Writable({
|
||||
write(_chunk, _encoding, callback) {
|
||||
callback();
|
||||
},
|
||||
});
|
||||
act(() => {
|
||||
instance = inkRenderDirect(tree, {
|
||||
stdout: stdout as unknown as NodeJS.WriteStream,
|
||||
stdout: dummyStdout as unknown as NodeJS.WriteStream,
|
||||
|
||||
stderr: stderr as unknown as NodeJS.WriteStream,
|
||||
|
||||
|
||||
Reference in New Issue
Block a user